vuex 对象嵌套属性的修改 mutations set 很方便的写法

版权声明:转载请评论留言 https://blog.csdn.net/solocao/article/details/84989844

需求:一个对象

const state = {
  user: {
    verify: {
      state: 0
    }
  }
}

我需要使用类似this.set({ 'user.verify.state': 1 })这种写法直接获取或修改state[user.verify.state]的值。不知道别人怎么写的,我的写法如下:

const mutations = {
  set(state, params) {
    Object.keys(params).forEach(key => {
      // 需要替换的值
      const val = params[key];
      const arr = key.split(".");
      if (arr.length > 1) {
        let obj = state;
        while ((arr.length - 1) && (obj = obj[arr.shift()]));
        obj[arr[0]] = val
      } else {
        state[key] = val
      }
    })
  }
}

这样想要修改state中任意一个对象,就非常方便了。

猜你喜欢

转载自blog.csdn.net/solocao/article/details/84989844