使用vuex時 官方推薦使用commit才修改state數據。vue
save(state, { path, data }) { if (!path ) { throw new Error('need path') } const keyPath = path.split('.') let needSave = state for (let i = 0; i < keyPath.length - 1; i++) { needSave = needSave[keyPath[i]] if(!needSave) { throw new Error(`error path: ${keyPath[i]}`) } } needSave[keyPath[keyPath.length - 1]] = data } // 使用 vuex.commit('save', {path:'a.b.c', data:'我是須要保存的數據'}) state.a.b.c = '我是須要保存的數據' //組件中使用 //若是要雙向綁定某個vuex中的值。 <input v-model="c"> //script computed: { c: { get(){ return vuex.state.a.b.c }, set(val) { vuex.commit('save', {path:'a.b.c',data: val}) } } }
這樣就作到了在組件中雙向綁定,而且使用commit改變state中的值,vuex使用嚴格模式也不會報錯了。vuex
原文地址:http://www.javashuo.com/article/p-qkvxknrg-gp.htmlsegmentfault