Vue3 usa el formulario el-form pit + el-input no se puede ingresar + el-date-picker el tiempo de selección no se puede asignar

 Encontré un gran hoyo y me tomó varias horas encontrar el problema.

Cuando vue3 usa el-form, el siguiente código hará que el cuadro de entrada no pueda ingresar, el valor no se pueda asignar y el cuadro de selección no se pueda seleccionar

<el-form class="my-form" ref="form" :model="form" label-width="80px">
    <el-form-item label="活动名称">
      <el-input v-model="form.name"></el-input>
    </el-form-item>
    <el-form-item label="活动时间">
      <el-date-picker
        type="date"
        placeholder="选择日期"
        v-model="form.date"
        style="width: 100%;"
        value-format="YYYY-MM-DD"
      ></el-date-picker>
    </el-form-item>
    <el-form-item label="活动形式">
      <el-input type="textarea" v-model="form.desc"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">立即创建</el-button>
      <el-button>取消</el-button>
    </el-form-item>
  </el-form>
    setup() {
      const state = reactive({
        form: {
          name: '1',
          date: '',
          desc: ''
        }
      })

      function onSubmit() {

      }

      return {
        ...toRefs(state),
        onSubmit
      }
    }

¿Qué lo causó?

Este problema se produce porque el nombre de referencia es el mismo que el del modelo.

La razón es que el-form declara ref="form", lo que hace que se sobrescriba el formulario declarado en el estado. Si hay un conflicto, modifique ref="form1" o model="formData" (puede elegir este nombre casualmente) para resolver el problema

Entonces, ¿por qué entran en conflicto? No lo sé, por favor guíame, si lo sé, lo actualizaré en el futuro.

Solución

Ahora que conoces el conflicto, la solución es cambiar el nombre.

Lo modifiqué para que sea el siguiente y se puede ejecutar normalmente.

<el-form class="my-form" ref="form" :model="formData" label-width="80px">
    <el-form-item label="活动名称">
      <el-input v-model="formData.name"></el-input>
    </el-form-item>
    <el-form-item label="活动时间">
      <el-date-picker
        type="date"
        placeholder="选择日期"
        v-model="formData.date"
        style="width: 100%;"
        value-format="YYYY-MM-DD"
      ></el-date-picker>
    </el-form-item>
    <el-form-item label="活动形式">
      <el-input type="textarea" v-model="formData.desc"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="onSubmit">立即创建</el-button>
      <el-button>取消</el-button>
    </el-form-item>
  </el-form>
setup() {
      const state = reactive({
        formData: {
          name: '1',
          date: '',
          desc: ''
        }
      })

      function onSubmit() {

      }

      return {
        ...toRefs(state),
        onSubmit
      }
    }

Acho que você gosta

Origin blog.csdn.net/wenhui6/article/details/120291746
Recomendado
Clasificación