父组件A(data: a) // a是json对象, a:{b:[1,2,3]}
|—子组件B(props:['b'] , template: v-for(elm,index) in b) , @click="change(elm)"
单纯使用vue时,
如果要在子组件B中修改b[1]的值,在change
方法中直接修改elm即可:change(elm){elm=0}
,不需要关心index,
引入vuex之后,
如果在子组件B中直接修改elm,在state中的数据不会跟着改变,以后再从state中取数据就是老数据了,
因此需要把数据放到state中,然后通过dispatch来修改值,
但是如果往mutation中传入elm,再从a.b中找到elm然后修改,会很麻烦,
因此往mutation中传入index,然后修改:change(state,index){ state.a.b[index]=0 }
这样好了一些,但是相比vue还是显得麻烦,而且用index不直观。
这个场景下,是否有更好的办法,像只使用vue时那样,传入elm就能修改state的值?