Ant Design Vue 给form动态赋值时 出现set a form field before rendering a field associated with the value.

项目中有一个需求,点击列表条目编辑的时候,需要弹出一个modal,同时将列表的数据赋给modal中的form,一开始,我是在methods中定义了一个方法来接收列表参数
    dialogShow (item, flag) {
      this.modalTitle = flag === 0 ? '新增工号' : '修改工号'
      if (flag === 1) {
        this.form.resetFields()
      }
      this.visible = true
      if (item) {
          this.form.setFieldsValue({
              field: item.value
        })
      }
    }
但是,当我点击列表的编辑时,却出现了一行报错set a form field before rendering a field associated with the value. You can use getFieldDecorator(id, options) instead v-decorator="[id, options]" to register it before render.
这当时让我蒙了好久,根据报错信息,需要使用getFieldDecorator方法来替换掉原有的item注册,但是官方文档并未详细提及这个方法该如何使用,于是我又仔细看了一眼,发现问题应该是出在了赋值的时机上,于是,我写了几个生命周期的函数在里面,挨个测试还是不行。
最后,我在查找有关DOM相关操作时机的时候,看到了一个方法$nextTick 这个回调意味着,DOM全部加载完成后,会调用这个函数,从而可以在这个函数中通过js来操作DOM。于是我将代码改成了下面这样
      this.modalTitle = flag === 0 ? '新增工号' : '修改工号'
      if (flag === 1) {
        this.form.resetFields()
      }
      this.visible = true
      if (item) {
        this.$nextTick(() => {
          this.form.setFieldsValue({
            field: item.value
          })
        })
      }
这样,就可以完成对form的赋值

你可能感兴趣的:(Vue,Ant,desigin,vue,js)