在VUE里面ref获取dom,$ref和使用echarts,nextTick很重要

在VUE里面获取dom和使用echarts
去vue官网好好看看ref和nextTick
首先说一下原因吧,就是echarts里面需要使用dom来挂载画布,这就意味着我们要获取dom,获取dom的方法呢有几种,普遍的就是getElementById,在vue里面还有一种方法,就是使用ref,在标签中写上ref=“test”,在methods里面就使用this.$ref.test 就可以实现获取dom,这里要注意$ref要注意下面两点。

1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.$nextTick(()=>{}) 中调用。

这里项目里面就是在mounted(){} 钩子中调用,调用后使用了if(this.$ref.test)来判断是否为空,跳过空状态。注意这个不能直接判断而不使用mounted,不然可就是真的空着的了。
this.$nextTick(()=>{})这个的意思就是说在dom状态更新之后立即执行回调函数,这就是说获取新的dom,可以看看下面的博客。记住要点,vue对dom的更新diff是异步的。
https://www.jianshu.com/p/98148196a1f2

2、如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。

https://www.cnblogs.com/goloving/p/9404099.html

Vue 3使用ref获取DOM元素时,需要注意以下几点: 1. 在模板使用ref指令时,要确保指令绑定的变量是一个响应式引用,可以使用`ref()`函数来创建一个响应式引用。 2. 在模板使用ref指令时,要确保指令绑定的元素已经被渲染出来了,否则获取到的DOM元素为null。 3. 在组件使用ref指令时,要确保指令绑定的元素在组件的“$nextTick”钩子函数才能被访问到。 下面是一个获取DOM元素的示例代码: ```html <template> <div> <input type="text" ref="inputRef" /> <button @click="handleClick">获取输入框的值</button> </div> </template> <script> import { ref } from 'vue'; export default { setup() { const inputRef = ref(null); const handleClick = () => { console.log(inputRef.value.value); }; return { inputRef, handleClick, }; }, }; </script> ``` 在这个示例,我们使用ref”函数创建了一个响应式引用“inputRef”,并将其绑定到输入框上。在“handleClick”函数,我们通过“inputRef.value.value”来获取输入框的值。注意,我们需要使用两个“value”来访问DOM元素的值,因为“inputRef.value”本身是一个响应式引用。 如果你在模板使用ref指令,并且获取到的DOM元素为null,那么可以尝试在组件的“$nextTick”钩子函数访问DOM元素。例如: ```html <template> <div> <div ref="containerRef"> <p>一些内容</p> </div> </div> </template> <script> import { ref, onMounted } from 'vue'; export default { setup() { const containerRef = ref(null); onMounted(() => { console.log(containerRef.value.clientHeight); }); return { containerRef, }; }, }; </script> ``` 在这个示例,我们使用ref”函数创建了一个响应式引用“containerRef”,并将其绑定到一个“div”元素上。在“onMounted”钩子函数,我们通过“containerRef.value.clientHeight”来获取该元素的高度。由于高度的计算需要等待该元素渲染完成,因此我们需要在组件的“$nextTick”钩子函数访问该元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值