Код: Выделить всё
const onRouteChangeStart = useCallback(() => {
if (
(checkConditions &&
!window.confirm("Do you want to exit without saving changes?")
) {
// Prevent navigation
router.events.emit("routeChangeError");
throw "Route change aborted.";
}
}, [usedMetric, editedMetric, fullMetricState, router.events]);
useEffect(() => {
router.events.on("routeChangeStart", onRouteChangeStart);
return () => {
router.events.off("routeChangeStart", onRouteChangeStart);
};
}, [onRouteChangeStart, router.events]);
Также я попытался изменить окно .location внутри onroutechangestart , но, как и ожидалось, было еще хуже, что router.push , потому что он бесконечно запускал обработчик.
Могу я Несмотря на то, что он не подходит на предыдущую страницу (или на следующей странице - у нее такая же проблема) без каких -либо последствий на историю и URL?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ny-effects
Мобильная версия