1. 程式人生 > >vuex 物件巢狀屬性的修改 mutations set 很方便的寫法

vuex 物件巢狀屬性的修改 mutations set 很方便的寫法

需求:一個物件

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中任意一個物件,就非常方便了。