【问题标题】:Generate missing nested objects while using Vue.$set使用 Vue.$set 时生成缺少的嵌套对象
【发布时间】:2020-10-28 13:21:13
【问题描述】:

在使用Vue.$set时如何生成缺少的嵌套对象(如barabc)?

export const mutations = {
  UPDATE(state, payload) {
    this._vm.$set(state.foo.bar.a.b.c, payload.key, payload.value)
  }
}

我实际上使用的是_.get(state, payload.path),而不是state.foo.bar.a.b.c

【问题讨论】:

    标签: javascript vue.js nuxt.js vuex


    【解决方案1】:

    您包含的代码应该可以工作。你有错误吗?

    编辑:

    好的,我想我现在明白了 - 所以根据你的例子,例如b 可能尚不存在,如果存在则应创建。

    我不认为Vue.$set 会自动执行此操作,但您可以使用这样的自定义解决方案,它应该创建payload.path 链中缺少的任何对象:

          let objectLevels = payload.path.split('.');
          const propToChange = objectLevels.reduce((res, level) => {
            if (!res[level]) this.$set(res, level, {});
            return res[level];
          }, state);
          this.$set(propToChange, payload.key, payload.value);
    

    【讨论】:

    • 我收到此警告:[Vue warn]: Cannot set reactive property on undefined, null, or primitive value: undefined
    • 我已经用建议的解决方案更新了我的答案。
    猜你喜欢
    • 2020-11-18
    • 2019-10-16
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2020-06-14
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多