Vue3 form表单赋值后,input输入框无法输入

1.使用reactive初始化数据: 需要用一个对象包裹数据,使其变成响应式数据

![reactive](https://i-blog.csdnimg.cn/direct/cbb3831b88544f30bae546f1a4615ae2.pngForm表单及JS中的使用都需要 “paramr.formUser” 进行调用
原因: 使用reactive生成的响应式数据,在直接赋值时把响应式数据给替换为了普通数据了,导致无法监听数据的变化。

2. 在表单验证中, ref 与 model 如果使用同一个变量,也可能造成输入框无法输入的情况在这里插入图片描述

3.使用get

在这里插入图片描述
在这里插入图片描述4.使用toRefs分别给对象属性赋值(不建议)

 const { name, age, sex, date, addr } = toRefs(props.childData.row)
### Vue3 表单字段赋值和清空 #### 使用 `reactive` 和 `ref` 在 Vue 3 中,表单字段可以通过 `reactive` 或者 `ref` 来定义并管理其状态。为了实现表单字段的赋值和清空操作,通常会保存一份原始数据副本用于重置。 当使用 `reactive` 定义响应式对象时,可以直接通过重新分配整个对象来进行初始化设置或清除操作[^2]: ```javascript import { reactive, toRefs } from &#39;vue&#39;; // 原始数据模板 const formDataTemplate = { name: &#39;&#39;, email: &#39;&#39; }; // 初始化表单数据 let formData = reactive({ ...formDataTemplate }); function resetFormData() { Object.assign(formData, formDataTemplate); } ``` 对于单独的输入控件,则可以利用 `ref` 进行更细粒度的操作: ```javascript import { ref } from &#39;vue&#39;; // 单独定义每个字段作为 refs const userName = ref(&#39;&#39;); const userEmail = ref(&#39;&#39;); function clearInputFields() { userName.value = &#39;&#39;; userEmail.value = &#39;&#39;; } ``` #### 组件内部处理 如果是在组件内完成这些功能,可以在 setup 函数里声明上述变量以及相应的方法,并将其暴露出去供模板或其他地方调用。 ```html <template> <!-- 省略其他 HTML 结构 --> <form @submit.prevent="handleSubmit"> <label>Name:</label><input v-model="userName" /> <label>Email:</label><input v-model="userEmail" /> <button type="reset" @click="clearInputFields">Clear</button> <button>Submit</button> </form> </template> <script lang="ts"> export default defineComponent({ setup() { const userName = ref(&#39;&#39;); const userEmail = ref(&#39;&#39;); function handleSubmit() {/* 处理提交 */} function clearInputFields() { userName.value = &#39;&#39;; userEmail.value = &#39;&#39;; } return { userName, userEmail, handleSubmit, clearInputFields }; } }); </script> ``` 以上展示了如何在一个简单的场景下对 Vue 3表单字段执行赋值与清空动作。实际项目可能会更加复杂,涉及到更多类型的输入元素或者其他业务逻辑需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值