Vue中ref使用

本文介绍了在Vue中如何利用$refs属性来注册引用信息,并在表单提交后通过$refs.resetFields()方法清空表单内容。在DOM元素上,ref指向DOM元素,而在子组件上,它指向组件实例。示例代码展示了在el-form组件中如何应用此方法来实现表单数据的重置。

ref 是被用来给元素或子组件注册引用信息的。引用信息将会注册在父组件的 $refs 对象上。

在普通的 DOM 元素上使用ref,引用指向的就是 DOM 元素;

如果用在子组件上,引用就指向组件实例。

在vue中的表单form中,如果我们在开发时需要表单提交后,立即清空表单中的所有内容。

则vue的form表单有一个方法如下:

使用$refs.resetFields() 方法即

<el-form :model="addForm" :rules="addFormRules" ref="addFormRef" label-width="70px">
     <el-form-item label="用户名" prop="username">
         <el-input v-model="addForm.username"></el-input>
     </el-form-item>
     <el-form-item label="密码" prop="password">
         <el-input v-model="addForm.password"></el-input>
     </el-form-item>
</el-form>

methods: {
        // 监听添加用户框的关闭事件
        addDialogClosed() {
            this.$refs.addFormRef.resetFields()
        }
 }

可以在表单提交之后或取消之后清空表单中所有数据。

Vue中,ref被用来给DOM元素或子组件注册引用信息。若在普通的DOM元素上使用,引用信息就是元素;若在子组件上使用,引用信息就是组件实例。在Vue中直接操作DOM元素,必须用ref属性进行注册[^1]。 ### Vue2中ref使用方法 以下是一个在Vue2中使用ref获取DOM元素的示例代码: ```vue <template> <div id="app"> <div ref="testDom">11111</div> <button @click="getTest">获取test节点</button> </div> </template> <script> export default { methods: { getTest() { console.log(this.$refs.testDom) } } }; </script> ``` 在上述代码中,通过`ref="testDom"`给`div`元素注册引用信息,在`getTest`方法里,使用`this.$refs.testDom`获取该DOM元素并打印到控制台[^1]。 ### Vue3中ref使用方法 以下是Vue3里使用ref获取DOM元素的示例代码: ```vue <template> <div id="app"> <div ref="testDom">11111</div> <button @click="getTest">获取test节点</button> </div> </template> <script> import { ref } from "vue"; export default { setup() { const testDom = ref('') const getTest = () => { console.log(testDom.value); } return { getTest, testDom } }, } </script> ``` 在这个例子中,在`setup`函数里,使用`ref`函数创建一个响应式引用`testDom`,在`getTest`方法中,通过`testDom.value`获取DOM元素并打印到控制台[^1]。 ### ref作用在外部元素上的使用方法 以下是ref作用在外部元素上的示例代码: ```javascript var refoutsidedomTem = { template: "<div class='childComp'><h5>我是子组件</h5></div>" }; var refoutsidedom = new Vue({ el: "#ref-outside-dom", components: { "component-father": refoutsidedomTem }, methods: { consoleRef: function () { console.log(this); console.log(this.$refs.outsideDomRef); } } }); ``` ```html <div id="ref-outside-dom" v-on:click="consoleRef"> <component-father></component-father> <p ref="outsideDomRef">ref在外面的元素上</p> </div> ``` 在这个示例中,在`p`标签上使用`ref="outsideDomRef"`注册引用信息,在`consoleRef`方法里,使用`this.$refs.outsideDomRef`获取该DOM元素并打印到控制台[^2]。 ### ref在v-for中的使用方法 如果`refs`自身的DOM,或父级的DOM是通过`v-for`渲染出来的,Vue框架会把`refInFor`设置成`true`,然后`ref.key`在`registerRef`函数就被设置成数组。示例代码如下: ```vue <template> <div> <div v-for="item in csGroupNameArr" :key="item"> <div ref="arrayDiv"> {{ item }} </div> </div> </div> </template> <script> export default { data() { return { csGroupNameArr: ['item1', 'item2', 'item3'] }; }, mounted() { this.$nextTick(() => { console.log(this.$refs.arrayDiv, 'arrayDiv') }) } }; </script> ``` 在上述代码中,使用`v-for`渲染多个`div`元素,并且给每个`div`元素设置`ref="arrayDiv"`,在`this.$nextTick`回调中,`this.$refs.arrayDiv`会是一个包含所有`div`元素的数组[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值