2017-02-17 16 views
3

Хотя я перенаправлен в «myFavouritePage», но «Привет, я ребенок» печатается после маршрутизации в «myFavouritePage». Есть ли функция в родительском, которая после завершения создает дочерние компоненты? Родитель:Асинхронный жизненный цикл между родительским и дочерним vue

beforeCreate() { 
    var orderNumber = this.$store.state.myStore.order.number 
    if (!orderNumber) { 
     this.$router.push({name: 'myFavouritePage'}) 
    } 
} 

Ребенок:

mounted() { 
    cosole.log('Hi, I'm child') 
} 
+0

«печатание до моей маршрутизации» - мое плохое. Установленный() в дочерний объект начал выполняться после выполнения команды beforeCreate(). – KaliCharan

ответ

1

Вы можете использовать охрану компонентов в вашем компоненте и импорта vuex магазин в одном файле.

import store from 'pathto/your/store' 

beforeRouteEnter(to, from, next) { 
if (!store.state.myStore.order.number) return next({name: 'myFavouritePage'}) 
next(); 
} 
+0

Я думаю, что OP хочет знать, почему это странное поведение, код в «установленном» дочернем выполняется до 'beforeCreate' родителя. – Saurabh

+0

Даже хочу знать. –

+0

Спасибо, решил проблему. – KaliCharan

1

Чтобы пролить некоторый свет на то, что это order различных событий жизненного цикла, после это порядок, в котором они имеют место:

  • beforeCreate() и создал() родительского запуска первого ,
  • Шаблон родительского объекта визуализируется, что означает, что создаются дочерние компоненты
  • так что теперь выполняются надстройки children beforeCreate() и created() соответственно.
  • Эти дочерние компоненты монтируются в элементы DOM, которые называет их beforeMount() и закрепленные() крючки
  • , и только после того, как шаблон родителя закончен, можно установить родительский элемент в DOM, так что, наконец, родительский элемент beforeMount() и закрепленные() крючки.

Однако для вас цели, как предложено мной и @Srinival, вы можете использовать beforeRouteEnter решить, хотите ли вы, чтобы идти вперед с оказанием или перенаправить на другой маршрут.

+1

Это должен быть принятый ответ – Sinan