выполнить функцию после $router.перейти в Vue

#javascript #vue.js #nuxt.js

#javascript #vue.js #nuxt.js

Вопрос:

Может кто-нибудь сказать, как я могу выполнить функцию после this.$router.go(-1), если это возможно. Я пробовал с помощью nextTick, но я думаю, что это неправильно.

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

1. что делает эта функция? какая область для этого требуется?

2. идея в том, что ранее я должен был проверить, зарегистрирован ли пользователь, не зарегистрирован или является участником. если пользователь не является партнером или не зарегистрирован, я должен отправить обратно и показать панель, чтобы просто войти в систему или превратить его / ее в партнера

3. почему бы не сделать это раньше router.go() ? в любом случае, отвечаю на вопрос вкратце.

Ответ №1:

Если функция, которую вы хотите выполнить, и функция router.go находятся в одном и том же компоненте, после запуска router.go, если происходит смена страницы, это означает, что компонент размонтируется, что, в свою очередь, означает, что функция не может быть выполнена. Что, я думаю, вы можете сделать, так это поискать хук, который вам поможет.

Вы можете вызвать свою функцию внутри beforeRouteLeave перехвата маршрутизатора. Проверьте реализацию в официальной документации маршрутизатора vue. Это сработает до вызова router.go

Вы также можете использовать один из крючков жизненного цикла компонента — beforeDestroy . если ваш компонент размонтируется. Итак, вы можете запустить свою функцию внутри метода beforeDestroy .

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

1. проблема в том, что то, что мне нужно выполнить в функции, находится не в первом компоненте, а в другом представлении, куда я отправляю пользователя.

2. Если функция, которую вы хотите выполнить, находится в другом компоненте, вы все равно можете использовать один из перехватов. либо перехват маршрутизатора beforeRouteEnter , либо перехваты жизненного цикла компонента vue created , либо mounted