|
2 | 2 |
|
3 | 3 | Как следует из названия, сторожевые хуки `Vue-router` используются для редиректов или отмены навигационных переходов. Есть несколько способов внедрить сторожевой хук: глобально, для конкретного пути, или для конкретного компонента. |
4 | 4 |
|
5 | | -Запомните **изменение параметров не вызывает сторожевые хуки**. Просто добавьте [watch на объект `$route`](../essentials/dynamic-matching.md#reacting-to-params-changes) для отслеживания этих изменений. |
| 5 | +Следует помнить, что **изменение параметров маршрута не вызывает выполнения сторожевых хуков enter/leave**. Вы можете добавить [watch на объект `$route`](../essentials/dynamic-matching.md#отслеживание-изменений-параметров) для отслеживания этих изменений, или использовать хук `beforeRouteUpadte`. |
6 | 6 |
|
7 | 7 | ### Глобальные хуки |
8 | 8 |
|
@@ -36,6 +36,14 @@ router.beforeEach((to, from, next) => { |
36 | 36 |
|
37 | 37 | **Удостоверьтесь, что функция `next` так или иначе будет вызвана, иначе хук никогда не будет разрешён.** |
38 | 38 |
|
| 39 | +### Глобальные хуки разрешения перехода |
| 40 | + |
| 41 | +> Добавлено в версии 2.5.0 |
| 42 | +
|
| 43 | +В 2.5.0+ вы можете зарегистрировать глобальный хук с помощью `router.beforeResolve`. Это похоже на `router.beforeEach`, с той разницей, что разрешающий хук будет вызван непосредственно перед подтверждением навигации, **после того, как будут разрешены все хуки компонента и асинхронные компоненты для маршрута**. |
| 44 | + |
| 45 | +### Глобальные хуки завершения перехода |
| 46 | + |
39 | 47 | Можно также зарегистрировать глобальные хуки, вызываемые после завершения перехода. Однако, в отличие от сторожевых хуков, в них не передаётся функция `next`, и на ход перехода они повлиять не могут: |
40 | 48 |
|
41 | 49 | ``` js |
@@ -108,3 +116,18 @@ beforeRouteEnter (to, from, next) { |
108 | 116 | ``` |
109 | 117 |
|
110 | 118 | Внутри `beforeRouteLeave` можно обращаться к `this` напрямую. Этот сторожевой хук обычно используется для предотвращения случайного ухода пользователя с пути, содержащего несохранённые отредактированные данные. Переход можно отменить, вызвав `next(false)`. |
| 119 | + |
| 120 | +### Полная цепочка обработки навигации |
| 121 | + |
| 122 | +1. Срабатывание навигации |
| 123 | +2. Вызов leave-хуков в деактивируемых компонентах |
| 124 | +3. Вызов глобальных `beforeEach` хуков |
| 125 | +4. Вызов `beforeRouteUpdate` хука в переиспользуемых компонентах (2.2+) |
| 126 | +5. Вызов `beforeEnter` в конфигурации маршрута |
| 127 | +6. Разрешение асинхронных компонентов для маршрута |
| 128 | +7. Вызов `beforeRouteEnter` в активируемых компонентах |
| 129 | +8. Вызов глобальных `beforeResolve` хуков (2.5+) |
| 130 | +9. Навигация подтверждена |
| 131 | +10. Вызов глобальных `afterEach` хуков. |
| 132 | +11. Выполняется обновление DOM. |
| 133 | +12. Вызов коллбэков, переданных в `next` в `beforeRouteEnter` хуке с созданными экземплярами. |
0 commit comments