vuex mutations 更新数据 用spread(...) 写法为什么没有触发视图更新呢?

vuex

const list = {
  state: {
    list: []
  },
  mutations: {
    update: (state, e) => {
      for (let i = 0; i < state.list.length; i++) {
        // 为什么下面这种写法不会触发视图更新呢
        // state.list[i] = { ...e, ...state.list[i] }
        for (const ii in e) {
          state.list[i][ii] = e[ii]
        }
      }
    }
  }
}

export default list
阅读 2k
2 个回答

你用Vue.set(state.list,i,{...e,...state.list[i]})呢。。

state.list原来为空数组,state.list[i]可以进行赋值操作,
但是在state.list[i]为空的情况下直接state.listi = e[ii];
会找不到state.list[i]对应的'ii'属性,state.list[i]尚未定义,未分配其内存空间,
应该先state.list[i]={};再赋值,或者直接用题主state.list[i] = { ...e, ...state.list[i] }字面量方式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题