まず反応することに失敗し、Vueのルータを使用してstore.js
Vuexゲッター-性質障害VUE-ルータを使用して - 彼らは
const state = {
isLogin: false
}
const mutations = {
login(state, userid){
state.userid = userid;
}
}
export default {
state,
mutations
}
のためのモジュールの一つである、user.js
があり、私は、Appコンポーネントを作成しました輸入されたstore.js
。
そして、コンポーネントlogin.vue
となります。コードの一部を以下に示します。
<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>
私はこの方法btnClick
は、このコンポーネントで作業できることに気づきました。 store.state.user.isLogin
が変更されました。
btnClick
が
login.vue
に切り替え
<template>
...
<a
v-if="isLogin"
v-link="'#'">
...
</a>
...
</template>
<script>
// import something
export default {
vuex: {
getters: {
isLogin: ({ user }) => user.isLogin
}
}
}
</script>
、isLogin
変更:
しかし、ここではisLogin
状態を聞いて別のコンポーネントa.vue
です。しかし、ゲッターisLogin
のa.vue
が変更されたようですが、<a>
が表示されないため、<a>
のv-if
は反応できませんでした。
子コンポーネントにstore
が注入されているかどうかをテストしようとしましたが、結果は成功しました。また、getters
の代わりにcomputed
を使用して、isLogin
を聴いてみましたが、どちらも反応しませんでした。 watch
属性にisLogin
を追加すると、監視に失敗しました。
私が確信していることが1つあります - Vue.use(Vuex)
は見逃せません。
問題を引き起こしたのがVue-router
かどうか疑問に思っていました。
そして、誰もがvue-router
とvuex
について質問をしていないようだ...
ようにそれを作るために持っているように、彼モジュール自体が 'state'のプロパティになります。それは 'user'と呼ばれるモジュールだったので、状態のプロパティになり、' isLogin'プロパティは 'state.user.isLogin'にあります – Jeff
です。これはちょうど私の愚かな間違いです。今それは動作します!ありがとうございました。 –