vue3.0获取虚拟dom方法

最近使用vue3.0+vue-router4.x+element-plus ui框架联合开发了一个小的商城项目,首先简单说一下element-plus ui框架。

官网上介绍了element-plus ui框架适用于vue3.0开发pc端,使用时发现只是框架部分代码可以拿来直接使用,但是其余的代码还没有更新

下面总结vue3.0遇到的一些问题,老生长谈的就是虚拟dom的获取相对于vue2.x来说很是有点麻烦的,在vue2.x里面,我们只需在标签行内添加ref属性并赋值,那么我们就可以拿到这个dom节点,通过this.$refs.xxx即可拿到dom node

但是在vue3.0框架里面是解除了this这个对象,所以我们不能在使用this.$refs来获取dom,那么我们怎样才能拿到dom节点呢?请看下面的代码(请不要忘记像vue2.x那样在需要获取dom的标签上添加ref属性并赋值)

下面是传统组合式api获取虚拟dom方法:

<template>
    <div>
        <div class="box" ref="goodInfo"></div>
    </div>
</template>
<script>
import { onMounted, ref, reactive,nextTick } from 'vue'
export default{

    setup(){
    //获取dom
    let goodInfo=ref(null)
    // 狗子函数mounted
    onMounted(()=>{
      GetGoodDetail()
      console.log(goodInfo,'获取dom节点');
      console.log(goodInfo.value,'获取该dom节点的值');
      console.log(goodInfo.value.offsetHeight,'获取该dom节点的高度');
    })
    return {
      // dom对象
      goodInfo
      }
  }

}
</script>

补充一下:我们要通过ref这个vue3.0内置的方法向变量注入一个值,然后在钩子函数onMounted中获取我们想要得到的dom节点上的值,设置简单变量的值用ref,取值要用value来取,也就是上面代码显示的要得到该dom的高度我们要使用goodInfo.value.offsetHeight即可,

注意:不要忘记把获取dom节点变量丢出来o,否则会报错,因为我们传给goodInfo变量的值是null,而null是没有value的,

接下来介绍另外一种方式获取dom,语法糖:<script setup> 获取dom ,请看代码:

<template>
    <div class="container" v-wechat-title="$route.meta.title">
        
    <div class="tree_box">
        <el-tree accordion ref="treeRef" :data="myData.treeData" :props="treeProps" :current-node-key="myData.curId" node-key="id" @node-click="methods.handleNodeClick"
            highlight-current />
    </div>
</div>
</template>

<script setup>

import { ref,reactive, onMounted,nextTick } from 'vue';
//创建变量treeRef并赋值,同时html模板<el-tree ref="treeRef" />上的ref=treeRef,这样才可以获取到该dom节点。获取dom节点还是要treeRef.value才可以
let treeRef=ref(null)

const myData=reactive({
    curId:''
})
//配置el-tree--props
const treeProps = {
    children: 'children',
    label: 'title',
    value:'id',
}
onMounted(() => {
    //默认展开el-tree指定的节点
    nextTick(() => {
       myData.curId=3
       treeRef.value.setCurrentKey(myData.curId)
    })
})

</script>

总结一下:vue3.x 语法糖方式获取dom

首先:创建变量treeRef并赋值

let treeRef=ref(null)

其次:html模板<el-tree ref="treeRef" />上的ref=treeRef

最后:获取dom节点还是要treeRef.value才可以

有什么不清楚的,欢迎在下面留言哦

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值