直接操作Vuex store中的state不是好的做法,同样,对数据的读取逻辑也应该放到store中:
sample code:
const store = createStore({
state() {
return {
counter: 0,
};
},
mutations: {
increment(state) {
state.counter += 2;
},
increase(state, payload) {
state.counter = state.counter + payload.value;
},
},
getters: {
finalCounter(state) {
return state.counter * 3;
},
normalizedCounter(_, getters) {
const finalCounter = getters.finalCounter;
if (finalCounter < 0)
return 0;
if (finalCounter > 100)
return 100;
return finalCounter;
},
},
});
其他组件读取这些数据:
<template>
<h3>{{ counter }}</h3>
<p>We do more...</p>
</template>
<script>
export default {
computed: {
counter() {
return this.$store.getters.normalizedCounter;
},
},
};
</script>
以及:
<template>
<h3>{{ counter }}</h3>
</template>
<script>
export default {
computed: {
counter() {
return this.$store.getters.finalCounter;
},
},
};
</script>