Зачем использовать beforeRouteEnter вместо смонтированного? - PullRequest
0 голосов
/ 12 октября 2018

Почему в vue-router существует защита навигации beforeRouteEnter?Есть ли случаи, когда beforeRouteEnter будет запущен, но mounted не будет?Если нет, то в каком случае вы бы предпочли использовать от beforeRouteEnter до mounted?

1 Ответ

0 голосов
/ 13 октября 2018

mounted - это хук жизненного цикла любого компонента Vue, он всегда будет срабатывать.Идея beforeRouteEnter или любого другого хука жизненного цикла, добавленного vue-router, состоит в том, чтобы позволить вам контролировать ваше приложение.

Например, предположим, что у вас есть маршрут с именем bar, который имеет действительно специфическую логику проверки, которая позволяет пользователю вводить в нее только если предыдущий маршрут был foo, вы можете вставить эту проверкулогика внутри этого хука вместо того, чтобы проверять каждое изменение маршрута в глобальной защите.

export default {
  name: 'Bar',
  beforeRouteEnter(to, from, next) {
    if (from.name === 'foo') {
      next(); // Calling next allow the route to proceed
    } else {
      next(false); // Don't allow the navigation
      // or
      next({
        name: 'foo',
        query: {
          from: 'bar'
        }
      }); // Redirect to any desired route as navigation made in $router
    }
  }
}
...