1111from reactpy .backend .types import Connection , Location
1212from reactpy .types import ComponentType , VdomDict
1313
14- from reactpy_router .components import History
14+ from reactpy_router .components import FirstLoad , History
1515from reactpy_router .hooks import _route_state_context , _RouteState
1616from reactpy_router .resolvers import StarletteResolver
1717from reactpy_router .types import CompiledRoute , Resolver , Router , RouteType
@@ -46,6 +46,7 @@ def router(
4646
4747 old_conn = use_connection ()
4848 location , set_location = use_state (old_conn .location )
49+ first_load , set_first_load = use_state (True )
4950
5051 resolvers = use_memo (
5152 lambda : tuple (map (resolver , _iter_routes (routes ))),
@@ -69,8 +70,15 @@ def on_history_change(event: dict[str, Any]) -> None:
6970 if location != new_location :
7071 set_location (new_location )
7172
73+ def on_first_load (event : dict [str , Any ]) -> None :
74+ """Callback function used within the JavaScript `FirstLoad` component."""
75+ if first_load :
76+ set_first_load (False )
77+ on_history_change (event )
78+
7279 return ConnectionContext (
7380 History ({"onHistoryChangeCallback" : on_history_change }), # type: ignore[return-value]
81+ FirstLoad ({"onFirstLoadCallback" : on_first_load }) if first_load else "" ,
7482 * route_elements ,
7583 value = Connection (old_conn .scope , location , old_conn .carrier ),
7684 )
0 commit comments