This repository was archived by the owner on Jul 6, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change 1
1
import util from '../../shared/util.ts'
2
2
import events from './events.ts'
3
3
4
+ const routerState = {
5
+ ready : false ,
6
+ hasDeferredRedirect : false ,
7
+ }
8
+
9
+ events . once ( 'routerstate' , state => {
10
+ if ( routerState . hasDeferredRedirect ) {
11
+ events . emit ( 'popstate' , { type : 'popstate' , resetScroll : true } )
12
+ }
13
+ Object . assign ( routerState , state )
14
+ } )
15
+
4
16
export async function redirect ( url : string , replace ?: boolean ) {
5
17
const { location, history } = window as any
6
18
@@ -19,5 +31,10 @@ export async function redirect(url: string, replace?: boolean) {
19
31
} else {
20
32
history . pushState ( null , '' , url )
21
33
}
22
- events . emit ( 'popstate' , { type : 'popstate' , resetScroll : true } )
34
+
35
+ if ( routerState . ready ) {
36
+ events . emit ( 'popstate' , { type : 'popstate' , resetScroll : true } )
37
+ } else if ( ! routerState . hasDeferredRedirect ) {
38
+ routerState . hasDeferredRedirect = true
39
+ }
23
40
}
Original file line number Diff line number Diff line change @@ -72,6 +72,7 @@ export default function Router({
72
72
useEffect ( ( ) => {
73
73
window . addEventListener ( 'popstate' , onpopstate )
74
74
events . on ( 'popstate' , onpopstate )
75
+ events . emit ( 'routerstate' , { ready : true } )
75
76
76
77
return ( ) => {
77
78
window . removeEventListener ( 'popstate' , onpopstate )
You can’t perform that action at this time.
0 commit comments