在 vue 中 prop 中传递一个数组时子组件不更新的问题
2018-03-19 本文已影响45人
woodccc
组件的功能是这样子的,需要根据一个二维数据循环渲染出多个 多选select
。封装了 select 组件后,由于是多选,select 组件传入的 prop value 是一个数组。项目里使用到了 vuex,遇到的问题是在 mutation 中更新数组时直接给对应的 index 赋值是不行的,在最开始我是这样子用的。
[mutationTypes.UPDATE_SOMETHING](state, { index, selectValues }) {
state.array[index] = selectValues
}
由于是多个select,所以 state 也是一个二维数组。最初直接给对应的 index 赋值,在 vue dev-tool 中看到的是已经更新了,但是组件不更新。后来发现需要这样子赋值才行。
[mutationTypes.UPDATE_SOMETHING](state, { index, value }) {
state.array[index] = [
..._.slice(state.array, 0, index),
value,
..._.slice(state.array, index + 1)
]
}
这样子,组件就能正常更新了。