mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
ad5431b4ae
original code in `/lib/router/router.js` ``` urlIsNew (pathname, query) { return this.pathname !== pathname || !shallowEquals(query, this.query) } ``` the urlIsNew compare `this.pathname` to an argument `pathname` the invokers: ``` // If asked to change the current URL we should reload the current page // (not location.reload() but reload getInitialProps and other Next.js stuffs) // We also need to set the method = replaceState always // as this should not go into the history (That's how browsers work) if (!this.urlIsNew(asPathname, asQuery)) { method = 'replaceState' } ``` the parameter here is `asPathname` destructured from `asPath` so here is a problem when we reuse a single page rendered in two asPaths pages/a.js ``` <> <Link href='/a'><a>goto a</a></Link> <Link href='/a' as='/b'><a>goto b</a></Link> </> ``` If we navigate to page /a, then click 'goto b', actually the history is replaced, not pushed. It is expected that history could be correctly pushed and popped as long as the browser url is changed. |
||
---|---|---|
.. | ||
about.js | ||
as-path-pushstate.js | ||
as-path-using-router.js | ||
as-path.js | ||
hash-changes.js | ||
head-1.js | ||
head-2.js | ||
index.js | ||
on-click.js | ||
pass-href-prop.js | ||
querystring.js | ||
redirect.js | ||
self-reload.js | ||
shallow-routing.js | ||
url-prop-change.js | ||
with-hoc.js |