您现在的位置是:网站首页> 编程资料编程资料
一文详解Vue3中使用ref获取元素节点_vue.js_
2023-05-24
382人已围观
简介 一文详解Vue3中使用ref获取元素节点_vue.js_
前言:
本文介绍在vue3的setup中使用composition API获取元素节点的几种方法:
静态绑定
仅仅需要申明一个ref的引用,用来保存元素,在template中,不必bind引用(:ref="domRef"),只需要声明一个同名的ref属性(ref="domRef")即可。
需要注意的是,访问的时候,要确保ref引用值已经成功绑定上元素,我们可以使用以下几种方式确保获取:
onMounted
onMounted(() => { domRef.value.style.background = "red" })nextTick
nextTick(() => { domRef.value.style.background = "red" })watchEffect
watchEffect(() => { if (domRef.value) { domRef.value.style.background = "red" } })watch
watch(domRef, (val) => { domRef.value.style.background = "red" })v-for中使用
在使用v-for进行静态绑定时,仅需要注意以下两点:
- 要与
v-for在同级 ref是一个数组ref([])
- {{ item }}
但需要注意的是,itemRefs元素数组并不保证与list数组为相同的顺序。
动态绑定
动态绑定中,分为两种方式,一种是通过将ref设置为函数,第二种则是通过getCurrentInstance方法访问当前组件实例上的$refs;
ref设置函数
ref的函数回调中,我们能够接受到元素返回值,再动态设置到响应式变量即可;
当然,通过设置函数回调的方式,我们也能非常灵活的进行进一步的封装。
- handleLiRef(el, item)">
通过getCurrentInstance方法
这种方式,与vue2的this.$refs一般无二,只是我们用了getCurrentInstance函数在setup中获取了当前组件实例以替代this。
获取vue实例
需要注意的是,无论通过以上哪种方式获取元素,如果元素为vue组件,则需要在子组件中使用defineExpose进行暴露。
在父组件中,我们静态绑定childRef。
在子组件中,我们需要通过defineExpose函数,手动暴露出来ref引用值,该值指向了button元素。
到此这篇关于一文详解Vue3中使用ref获取元素节点的文章就介绍到这了,更多相关Vue3 ref 获取元素节点内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- vue3 封装自定义组件v-model的示例_vue.js_
- Vue的filters(本地)或filter(全局)过滤常用数据类型解析_vue.js_
- vue3的setup语法如何自定义v-model为公用hooks_vue.js_
- Element Table行的动态合并及数据编辑示例_vue.js_
- js字符串中空格和换行符(\r,\s,\n,\r\n)浅析_javascript技巧_
- Vue实现获取后端接口API代码片段(已封装Service方法名)_vue.js_
- Vue中tab栏切换的简单实现_vue.js_
- vue 使用mescroll.js框架实现下拉加载和上拉刷新功能_vue.js_
- element表格行列的动态合并示例详解_vue.js_
- vue开发table数据合并实现详解_vue.js_
