I have a dynamic route:
test/[id].js
When user clicks on a link pointing to /test/1
Next.js ends up rendering the proper page as intended.
The funny business starts when I want to have /test/1
url masked with anything else.
<Link href="/test/1" as="/any/thing/here">
As far as I understand the above code should:
What happens is it does not point to test/[id].js at all, just returns a 404.
Sandbox link with broken code:
https://codesandbox.io/s/nervous-silence-z62s1?file=/pages/index.js
What am I doing wrong here? I have a really long and complex urls with lots of slashes I have to use with Next.js dynamic routing, and I don't see any other solution than using "as"... I'm pretty much sure I used to use it a few years back and it just worked! Seems like it worked for this guy as well: Linking to dynamic routes in Next.js
If Next.js changed something then how I recreate this functionality easily?
I think you need to write href
like that:
<Link
href="/test/[id]?id=1"
// Or like that
href={{
pathname: '/test/[id]',
query: { id: '1' }
}}
as="/any/thing/here"
>
<a>Link to test/1 - 'as' decorator is broken?</a>
</Link>
I am not sure why it works like that, but I saw it somewhere some time ago and I use it like that since then. I think there is no information about it in the docs.
And be sure that /any/thing/here
page actually exists too, because otherwise if user refresh browser after client side navigation there will be 404 anyway.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With