Запретить запуск истории браузера в React

#javascript #reactjs #react-router #browser-history

#javascript #reactjs #react-маршрутизатор #история браузера

Вопрос:

Я хочу, чтобы окно предупреждения отображалось до того, как пользователь покинет определенный URL

   componentWillReceiveProps() {
    const routeChangeListener = browserHistory.listenBefore(location => {
      console.log(location);
      routeChangeListener();
      return 'Are you sure you want to leave the page without saving?';
    });
  }
  

Это работает, но проблема в том

  1. Окно предупреждения все еще срабатывает после того, как я покидаю маршрут.
  2. Если я скажу «нет», я не хочу отменять из окна предупреждения, оно не сработает снова, если я попытаюсь покинуть маршрут.

Я не могу отменить запуск маршрута, когда я ухожу, и я не могу инициировать диалоговое окно, если я говорю, что хочу отменить диалоговое окно, и я думаю, это может быть потому, что я вызываю routeChangeListener после componentWillMount . В конечном итоге я хочу запустить здесь модальное окно вместо использования этого окна предупреждения.

Чего мне не хватает для отмены / предотвращения routeChangeListener после запуска диалогового окна?

Комментарии:

1. Где находится окно предупреждения в вашем коде? Я не вижу его в списке

2. @winhowes возвращает «Вы уверены, что хотите оставить страницу без сохранения?»; запускает диалоговое окно предупреждения Windows

3. Если вместо этого у вас есть предупреждение, дает ли это вам результат, который вы ищете?

4. @winhowes Я планирую добавить свой собственный модальный, но на данный момент текущий код не работает должным образом, поэтому я планирую добавить его после того, как он заработает. Надеюсь, это имеет смысл