İlk reaktif olması için başarısız, Vue-yönlendirici kullanma store.js
Vuex getters-özellikleri Arıza vue-yönlendirici kullanıyorsanız - onlar
const state = {
isLogin: false
}
const mutations = {
login(state, userid){
state.userid = userid;
}
}
export default {
state,
mutations
}
için modüllerden biri olan user.js
var, ben bir App Bileşen yarattı ve store.js
ithal edildi.
Ve sonra Bileşen login.vue
gelir.
<script>
export default {
vuex: {
actions: {
login // this action changes the state of
// isLogin by dispatch `login` mutation
}
},
methods: {
btnClick(){
// here calls the login action
}
}
}
</script>
Ben metot btnClick
bu bileşen çalışabilir fark: Aşağıdaki kodları bir parçasıdır. store.state.user.isLogin
değiştirildi.
btnClick
login.vue
toggled
<template>
...
<a
v-if="isLogin"
v-link="'#'">
...
</a>
...
</template>
<script>
// import something
export default {
vuex: {
getters: {
isLogin: ({ user }) => user.isLogin
}
}
}
</script>
, isLogin
değişti:
Ama burada isLogin
devlet dinleme başka bir bileşen a.vue
olduğunu. Ancak, a.vue
sürümündeki isLogin
bulucu değiştirilmiş olsa da, <a>
v-if
'un <a>
görünmediği için reaktif olamayacağı anlaşılıyor.
store
'un alt Bileşenlere enjekte edilip edilmediğini test etmeye çalıştım ve sonuç geçti. Ayrıca, isLogin
'u dinlemek için yerine computed
'u kullanmayı denedim ve bu da yanıt veremedi. isLogin
, watch
öznitelikleri eklerken, izleme başarısız oldu.
Ve emin olduğum bir şey var - Vue.use(Vuex)
kaçırılmadı.
Soruna neden olan Vue-router
olup olmadığını merak ediyordum.
Ve kimse vue-router
ile vuex
hakkında sık sorulan sorular görünüyor ki ...
gibi yapmak zorunda olduğu o Burada yapıldı, modül kendisi 'devlet' bir özellik haline gelir. Yani "user" adlı bir modül olduğu için, bu durum bir state özelliği haline geldi ve 'isLogin 'özelliği' state.user.isLogin 'durumunda – Jeff
görüyorum. Bu sadece benim aptalca hatam. Şimdi çalışıyor! Teşekkür ederim. –