[英]Next.js links refresh the page
我之前遇到过这个问题,我以为我已经解决了,但以上都没有帮助我完全解决问题,所以我发布了我的解决方案。
假设您想使用链接转到 slot/[key] 路由。
然后,在 pages 文件夹中创建一个带有 name slot 的文件夹,并在其中创建一个名为 [key].js 的文件,注意:不要忘记放置 []。
在 [key].js 文件夹中,您可以简单地导出要渲染的组件。 这有很多方法,我们现在不赘述。
现在,在使用 Link 时,请以这种方式使用它,
<Link
href={'/slot/[key]'}
as = {`/slot/${your_dynamic_variable}`}
>
<a>
Go to the slot route
</a>
</Link>
对于任何面临同样胡说八道的人: Link
错误地从@material-ui/core
自动导入
你要:
import Link from 'next/link'
在 next.js 中使用 Link 时要记住的一件事是不要在开头添加“/”,即,
<Link
href="nameoflink"
>
<a>
Click Me
</a>
</Link>
代替,
<Link
href="/nameoflink"
>
<a>
Click Me
</a>
</Link>
如果在开头添加“/”,页面会刷新。 但是,如果该链接位于整个应用程序中可访问的某个公共组件(如导航栏)中,则需要在开头添加“/”,在这种情况下,请在开头添加“/”。 试一试,如果它对你有用,那就太好了。 我只是觉得我应该分享。
**使用以下链接:**
<Link href="/shop/[pid]" as={`/shop/${id}`}>
<a>Shop by menu</a>
</Link>
代替
<Link href={`/shop/${id}`} as={`/shop/${id}`}>
<a>Shop by menu</a>
</Link>
我遇到了类似的问题。 就我而言,它是由<a>
标签嵌套在另一个组件中引起的,而不是作为Link
的直接子级。
所以我有:
<Link href='/something' passHref>
<MyComponent />
</Link>
其中MyComponent
接受href
作为道具,看起来像:
<a href={ href }>
Good things
</a>
乍一看,这确实有效,因为 href 已正确传递给锚标记。 但是当点击链接时它会导致整页刷新。 有一次,我感动的Link
和a
标签是在同一组件直接父/子,它解决了这个问题。 所以现在我在一个组件中拥有所有标准设置:
<Link href='/something' passHref>
<a>
Good things
</a>
</Link>
没有更多的页面刷新。
只需使用这个:
<Link href={`/blog/${encodeURIComponent(post.slug)}`}>
<a>{post.title}</a>
</Link>
参考: 如果路线有动态段
如果您使用 Head 标签,那么这将刷新您的页面
由于 Head 标签,它会刷新您的页面
<Head>
<Link href="YourLink"> <Link>
// Other codes...
</Head>
移除 Head 标签
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.