Chociaż jestem kierowany do "MyFavouritepage", ale "Cześć, jestem dzieckiem" drukowane po prowadzeniu do "MyFavouritepage". Czy istnieje funkcja w rodzica, która po zakończeniu tworzy elementy dziecka? Rodzic:

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

Dziecko:

mounted () {
    cosole.log('Hi, I'm child')
}
3
KaliCharan 17 luty 2017, 15:02

2 odpowiedzi

Najlepsza odpowiedź

Możesz użyć strażników komponentów w komponencie i importuj sklep Vuex w tym samym pliku.

import store from 'pathto/your/store'

beforeRouteEnter(to, from, next) {
 if (!store.state.myStore.order.number) return next({name: 'myFavouritePage'})
 next();
}
1
Srinivas Damam 17 luty 2017, 13:12

Rzucić trochę światła na to, co jest Zamów różnych zdarzeń cyklu życia, zgodnie z kolejnością, w jakim mają miejsce:

  • przedtem () i stworzony () rodzica działają najpierw.
  • Szablon rodzica jest renderowany, co oznacza, że komponenty dzieci zostaną utworzone
  • Więc teraz befourrecreate () i stworzone () haczyki odpowiednio.
  • Te elementy dziecka zamontowują się do elementów DOM, które wywołuje ich befoMount () i zamontowane () haczyki
  • I dopiero wtedy, po zakończeniu szablonu rodzica może być zamontowany do DOM, więc wreszcie wywołane haczyki rodzica () i zamontowane ().

Jednak dla ciebie cel, jak sugerowany przeze mnie i @Srinival, możesz użyć BeforeRouteenter zdecydować, czy chcesz iść dalej z renderowaniem lub chcesz przekierować na inną trasę.

1
Saurabh 17 luty 2017, 17:06