From 6e30d97248a12773860627a9fbd6c94ab3a905de Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Sun, 15 Sep 2024 03:33:28 +0000 Subject: [PATCH] improve navigation effects --- packages/app/src/router.jsx | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/app/src/router.jsx b/packages/app/src/router.jsx index 83fe29ca..b97d6ab1 100755 --- a/packages/app/src/router.jsx +++ b/packages/app/src/router.jsx @@ -165,31 +165,46 @@ const NavigationController = (props) => { state = {} } + app.location.last = window.location + + await navigate(to, { + state + }) + app.eventBus.emit("router.navigate", to, { state, }) - app.location.last = window.location - - return navigate(to, { - state - }) + return { + to, + state, + } } async function backLocation() { - app.eventBus.emit("router.navigate") - - app.location.last = window.location - return window.history.back() } + async function onHistoryChange() { + setTimeout(() => { + app.eventBus.emit("router.navigate", window.location.pathname, { + state: window.location.state, + }) + }, 0) + } + React.useEffect(() => { app.location = { last: window.location, push: setLocation, back: backLocation, } + + window.addEventListener("popstate", onHistoryChange) + + return () => { + window.removeEventListener("popstate", onHistoryChange) + } }, []) return props.children