(1) scrollmagic 이벤트가 있는 파일에 이벤트 삭제 함수를 만듦
그 후, 이벤트가 적용되는 상세페이지 컴포넌트에 페이지를 나갔을 때, 이벤트 삭제 함수를 부르는 방법으로 해결
//product_ui.js(scrollmagic이 있는 파일)
var controller;
var scrollController;
var scrollInit = () => {
controller = new ScrollMagic.Controller();
scrollController = new ScrollMagic.Scene({triggerElement: '#mo_total_section',offset: 570})
.addTo(controller)
.on("enter", function () {
$('.mo_purchase_footer').addClass('on');
})
.on("leave", function () {
$('.mo_purchase_footer').removeClass('on');
})
// .addIndicators({
// name: "test"
// })
}
var scrollDestroy = () => {
scrollController.destroy(true);
scrollController = null;
controller.destroy(true);
controller = null;
}
React.useEffect(() => {
if (typeof window !== 'undefined' && isMobile ) {
scrollInit();
}
return () => {
if (typeof window !== 'undefined' && isMobile ) {
scrollDestroy();
}
};
}, [isMobile, productDetailPageStore, productInfoOptionsStore]);
scrollinit is undefined
(2) try … catch문으로 에러처리
React.useEffect(() => {
try {
if (window && isMobile ) window.scrollInit();
} catch (error) {console.log(error);}
return () => {
try {
if (window && isMobile ) window.scrollDestroy();
} catch (error) { console.log(error);}
};
}, [isMobile, productDetailPageStore, productInfoOptionsStore]);