react-router-course-ru
  • Вступление
  • Подготовка
    • Настраиваем dev-окружение
  • Создаем примитивный роутер
  • Подключаем react-router
    • BrowserHistory vs HashHistory
    • Дописываем роуты
    • Активная ссылка
      • Ссылка на главную
    • IndexRedirect
    • Программируем переходы
    • Разделение доступа
    • Подтверждение перехода
    • Итого по роутингу
  • Подключаем redux
    • store.dispatch редирект
    • "Закрытый" компонент
    • Итого по react-router + redux
Powered by GitBook
On this page

Was this helpful?

  1. Подключаем react-router

Подтверждение перехода

PreviousРазделение доступаNextИтого по роутингу

Last updated 5 years ago

Was this helpful?

ОБНОВЛЕНИЕ 2018: в учебнике хорошая теория, но ему уже два года. Проверяйте версии пакетов. За выходом нового учебника можно следить в или

На так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, !

Подтверждение перехода

Страница Home/index.js - уже зарекомендовала себя в качестве страницы для "выдуманных примеров". Сделаем еще один.

Представьте ситуацию, что вам нужно спросить у пользователя подтверждение о переходе. Самый распространенный вариант - редактирование каких-то данных -> клик на ссылку -> "вы уверены что хотите перейти, все изменения будут утеряны" -> да/нет.

В нашем, упрощенном примере, мы просто покажем окно, на любой переход с главной страницы.

src/components/Home/index.js

...
componentDidMount() {
    this.context.router.setRouteLeaveHook(this.props.route, this.routerWillLeave)
}
routerWillLeave() {
    let answer = window.confirm('Вы уверены?')
    if (!answer) return false
}
...

Так же, можно использовать более краткую запись в функции routerWillLeave:

routerWillLeave() {
    return 'Вы уверены?'
}

Я надеюсь, что всем понятно: вместо стандартного confirm-окна, мы можем показать свои формочки и прочее... Главное, что мы должны вернуть false, если не хотим перехода.

Обратите внимание: если вы попробуете, находясь на главной странице, вписать адрес вручную и нажать enter - переход произойдет без вопросов.

Итого: научились предотвращать нежелательный переход по клику.

Ссылка на (EN)

на данный момент.

документацию
Исходный код
telegram канале
twitter
канале
присоединяйтесь
confirm
confirm_nav_screen