Vue.js开发技巧

在 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)
    ]
}

这样子,组件就能正常更新了。

上一篇下一篇

猜你喜欢

热点阅读