Могу ли я помешать следующему маршрутизатору отталкиваться в истории без каких -либо последствий?Javascript

Форум по Javascript
Ответить
Anonymous
 Могу ли я помешать следующему маршрутизатору отталкиваться в истории без каких -либо последствий?

Сообщение Anonymous »

У меня есть простой код, предотвращающий страницу с формой, когда заполнение формы запускается, но не закончена. К сожалению, когда пользователь пытается перейти на предыдущую страницу с кнопкой браузера (обычно стрелка в верхнем левом углу окна браузера), URL-адрес изменяется независимо от выбора пользователя, чтобы оставить страницу или оставаться на странице. < /p>

Код: Выделить всё

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]);
Я попытался использовать router.push внутри обработчика onroutechangestart , чтобы вернуть URL -адрес текущей страницы после изменения URL. Это сработало, но превратило историю в беспорядок, потому что два изменения URL -адреса (на URL предыдущей страницы, а затем на URL -адрес текущей страницы) были сохранены в истории. < /P>
Также я попытался изменить окно .location внутри onroutechangestart , но, как и ожидалось, было еще хуже, что router.push , потому что он бесконечно запускал обработчик.
Могу я Несмотря на то, что он не подходит на предыдущую страницу (или на следующей странице - у нее такая же проблема) без каких -либо последствий на историю и URL?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ny-effects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»