美文网首页Vue.js开发技巧
在 vue 中 prop 中传递一个数组时子组件不更新的问题

在 vue 中 prop 中传递一个数组时子组件不更新的问题

作者: woodccc | 来源:发表于2018-03-19 10:36 被阅读45次

    组件的功能是这样子的,需要根据一个二维数据循环渲染出多个 多选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)
        ]
    }
    

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

    相关文章

      网友评论

      本文标题:在 vue 中 prop 中传递一个数组时子组件不更新的问题

      本文链接:https://www.haomeiwen.com/subject/ezuuqftx.html