Vuex 突变:使用 ES6 语法解构状态参数(使用类星体框架)
Vuex mutation: deconstruct state parameter using ES6 syntax (using quasar framework)
我有两种不同的语法。我可以使用 mapGetters() 和 mapActions() 访问我的 getters 和我的操作。第一个不解构状态参数并起作用。第二个确实解构了状态,但突变不会改变状态,而 getter 可以访问状态并且动作在解构上下文时没有问题。
我不明白为什么。
我是否滥用了 ES6 / vuejs / vuex / quasar ?
Vue.use(Vuex)
export default new Vuex.Store({
state: {
counter1: 0,
counter2: 0
},
getters: {
counter1: state => state.counter1,
counter2: ({ counter2 }) => counter2
},
mutations: {
increment1: state => state.counter1++,
increment2: ({ counter2 }) => counter2++
},
actions: {
increment1: context => context.commit('increment1'),
increment2: ({ commit }) => commit('increment2')
}
})
我的一个朋友给了我答案。我误用了 ES6。
{ counter2 } 不引用 state.counter2,而是复制它。
在更改counter2时无法更改state.counter2是有道理的。
我有两种不同的语法。我可以使用 mapGetters() 和 mapActions() 访问我的 getters 和我的操作。第一个不解构状态参数并起作用。第二个确实解构了状态,但突变不会改变状态,而 getter 可以访问状态并且动作在解构上下文时没有问题。
我不明白为什么。 我是否滥用了 ES6 / vuejs / vuex / quasar ?
Vue.use(Vuex)
export default new Vuex.Store({
state: {
counter1: 0,
counter2: 0
},
getters: {
counter1: state => state.counter1,
counter2: ({ counter2 }) => counter2
},
mutations: {
increment1: state => state.counter1++,
increment2: ({ counter2 }) => counter2++
},
actions: {
increment1: context => context.commit('increment1'),
increment2: ({ commit }) => commit('increment2')
}
})
我的一个朋友给了我答案。我误用了 ES6。
{ counter2 } 不引用 state.counter2,而是复制它。
在更改counter2时无法更改state.counter2是有道理的。