IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> setup中使用ref -> 正文阅读

[JavaScript知识库]setup中使用ref

目录

一、问题

二、解决方法

?三、总结


一、问题

1.在选项式API中可以直接用 this.$refs.xxx来引用template中的DOM元素。

? ?但是在组合式API?setup中没有this,该如何用 ref获取到?DOM元素呢?

2.this.$refs.xxx获取DOM元素的方法

1)在dom上添加 ref="xxx",在方法中直接使用 this.$refs.xxx引用

2)代码

<template>
    <div class="testdiv" ref="testdiv">测试一下</div>
</template>
<script>
  export default{
      mounted(){
     console.log("this.$refs.testdiv",this.$refs.testdiv,this.$refs.testdiv.innerHTML,this.$refs.testdiv.clientWidth)
   },
  }
</script>

3)结果

二、解决方法

1.?方法

? ?在DOM上添加 ref="xxx" ,在 setup中定义一个?和xxx名称完全相同的 ref响应式变量xxx,并且return出去。

? ?则变量xxx.value就是DOM元素的引用。?直接使用xxx.value.functioname、xxx.value.attributename就可以获取DOM元素的方法或属性。

2.?代码

<template>
    <div class="testdiv" ref="testdiv">测试一下</div>
</template>
<script>
import { defineComponent, ref, reactive, onMounted } from 'vue';

export default defineComponent({
  setup(props, { emit, slots, attrs }) {
    const testdiv = ref(null);
    onMounted(() => {
      test();
    });
    const test = () => {
      console.log('testdiv', testdiv, testdiv.value.innerHTML, testdiv.value.clientWidth);
    };
    return{
      testdiv
    }
  }
  })
</script>

3.结果

图 2-1

4.注意不能使用 reactive?声明变量,使用reactive声明得不到DOM的引用,结果如图2-2所示

? 1)代码

<template>
    <div class="testdiv" ref="testdiv">测试一下</div>
</template>
<script>
import { defineComponent, ref, reactive, onMounted } from 'vue';

export default defineComponent({
  setup(props, { emit, slots, attrs }) {
    const testdiv = reactive({});
    onMounted(() => {
      test();
    });
    const test = () => {
      console.log("testdiv",testdiv,testdiv.innerHTML,testdiv.clientWidth)
    };
    return{
      testdiv
    }
  }
  })
</script>

? 2)结果

图 2-2

?三、总结

1.setup中使用ref: DOM上添加ref="xxx",setup中定义一个 ref变量xxx,并且return出去,则xxx.value就是DOM的引用,可以用 xxx.value直接使用DOM元素里面的方法和属性

2.应用场景:ref主要用于在父组件中需要直接使用子组件的方法和属性

3.注:必须等到页面加载完之后才可以用 ref获取DOM,否则会报错的,找不到DOM。所以一般在函数中使用ref.

/*

希望对你有帮助!

如有错误,欢迎指正!非常感谢!

*/

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:43:36  更:2022-09-30 00:44:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:37:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码