【发布时间】:2022-11-07 04:44:06
【问题描述】:
当我在 NextJs 中使用 <Link> 标记在页面之间导航时,它不会在更改页面后重新运行我的脚本。它仅在第一页加载后或我按重新加载时运行脚本。当使用普通的<a> 标签时,它可以正常工作,因为每次导航后页面都会重新加载。据我所知,这是因为<Link> 标签使它成为单页应用程序,并且在页面之间导航时不会刷新页面。
无论如何,我将非常感谢它在页面之间导航时重新运行脚本,或者让它刷新页面而不使用简单的<a> 标签并丢失单页应用程序功能。
此代码不会刷新页面
<Link href="/page1">
<a>Page 1</a>
</Link>
<Link href="/page2">
<a>Page 2 </a>
</Link>
此代码确实刷新页面
<a href="/page1">Page 1</a>
<a href="/page2">Page 2 </a>
我使用脚本组件加载所有脚本
export default const MyScripts = () => {
return (
<Script
strategy="afterInteractive"
type="module"
src="/scripts/myScript.js"
onReady={() => {
console.log("Ready")
}}
/>
)
}
我注意到的一件事是,上述onReady 函数在我每次更改页面时都会触发。也许有人知道如何从onReady 运行myScript.js。
【问题讨论】:
-
你在哪里使用
MyScripts组件? -
@KonradLinkowski 我在每页的 index.tsx 文件中使用它。就像任何其他组件一样。
-
添加了一种可能的修复方法,我无法弄清楚如何实现(最后两句话)。
标签: javascript reactjs typescript next.js next-link