Как показать всплывающее окно при выходе страницы с роутера React? - PullRequest
1 голос
/ 30 марта 2020

Итак, я хочу показать пользователям всплывающее окно, когда они пытаются покинуть страницу. Всплывающее окно будет иметь кнопки - вкл, чтобы сохранить контент и уйти, а другой просто уйти без сохранения.

Я использую router 3.2.1

Я пытался использовать routeLeaveHook functionallity , и это работает, чтобы открыть диалоговое окно.

Но проблема, с которой я сталкиваюсь сейчас, заключается в том, что я не уверен, как обрабатывать две функции, которые должны запускаться при нажатии кнопки? Должен ли я добавить sh к истории в них, чтобы перейти на нажатую страницу? Как я могу получить nextLocation там? Или я должен использовать routeLeaveHook как-то? Или есть другой способ сделать все это?

Спасибо за вашу помощь!

       class MyDialog extends React.Component {

            componentDidMount(): void {
                const { route,  routeLeaveHook} = this.props;
                routeLeaveHook(route, this.routerWillLeave);
            }

            routerWillLeave = (nextLocation: string): any => {

                if (dataToSave) {
                    ...open dialog
                }
                return false;
            }

    render () {

            <div open={isOpen}>
             ...some content
              <button onClick={this.saveAndLeave}>
               Save and leave
              </button>
              <button onClick={this.leave}>
               Leave
             </button>
            </div>
    }
  }

ОБНОВЛЕНИЕ Прямо сейчас я думаю, что я должен переместить routerWillLeave logi c в контейнер Dialog вместо помещения его в диалог

1 Ответ

0 голосов
/ 30 марта 2020

https://codesandbox.io/s/myw173jyq8 эй, проверьте эту изолированную программную среду кода для навигации, используя ответный маршрутизатор с настраиваемым диалогом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...