【发布时间】:2021-07-06 04:52:14
【问题描述】:
我将 locomotive-scroll 与 Next.js 一起使用,一切正常。但是在路由到不同的页面后,我的卷轴不会破坏,并且 2 个卷轴相互重叠。
路由后如何在 Next.js 中正确重新初始化locomotive-scroll?
我的代码示例:
function MyApp({ Component, pageProps }) {
useEffect(() => {
import("locomotive-scroll").then((locomotiveModule) => {
let scroll = new locomotiveModule.default({
el: document.querySelector("[data-scroll-container]"),
smooth: true,
smoothMobile: false,
resetNativeScroll: true,
});
scroll.destroy(); //<-- DOESN'T WORK OR IDK
setTimeout(function () {
scroll.init();
}, 400);
});
});
return (
<main data-scroll-container>
<Component {...pageProps} />
</main>
);
}
【问题讨论】:
-
尝试将
scroll.destroy调用移动到useEffect的返回语句(cleanup phase),即return () => scroll.destroy();。 -
还是不行,return () => { scroll.destroy(); setTimeout(function () { scroll.init(); }, 500); };
-
我认为问题出在动态导入模块机车上,它已经初始化了一个新模块并对其应用了脚本,而旧的保持不变,可能需要替换动态导入静态
标签: javascript reactjs next.js locomotive-scroll