我在Next.js应用中实现了Tiny Slider,它需要页面上的内联脚本来控制滑块的行为。现在,虽然脚本在我第一次启动index.js时正确加载,但每当我使用Link导航到另一个页面并返回index.js时,脚本都无法加载。
下面是我在index.js中编写脚本的过程
{/* Script */}
<Script id='tester'>
{`
var slider = tns({
container: '.my-slider',
items: 6,
autoplay: true,
autoplayTimeout: 2000,
gutter: 20,
autoplayButtonOutput: false,
controls: false,
navPosition: 'bottom',
nav: false,
mouseDrag: true,
arrowKeys: true,
responsive: {
300: {
items: 2,
gutter: 50,
center: true,
fixedWidth: 250,
},
700: {
items: 3,
gutter: 50,
center: true,
fixedWidth: 250,
},
1440: {
items: 3,
gutter: 50,
fixedWidth: 250,
center: true,
}
}
});
`}
</Script>
我需要在每次index.js加载时加载脚本,而不仅仅是第一次加载。
1条答案
按热度按时间34gzjxbg1#
以下是向next.js应用程序添加tiny-slider的步骤。
1.添加pages/_document.js以加载样式
1.下面是一个加载滑块的示例页面
链接到代码沙箱:https://codesandbox.io/s/tina-slider-nextjs-0z8zi6?file=/pages/index.js:0-806
以下是有关该解决方案的几个关键注意事项
ref
跟踪钩子是否已经被调用(在开发模式下,18个钩子被调用两次)typeof window !== "undefined"
来确保tiny-window只在客户端加载,而不在服务器上加载(这会导致“window is undefined”错误)tns
函数