vue3 - vue3中使用ref来获取dom节点

这篇具有很好参考价值的文章主要介绍了vue3 - vue3中使用ref来获取dom节点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue3和vue2获取元素的不同:vue2是通过 this.$refs api获取dom节点的 ; vue3是 直接使用同名的 ref 响应式数据来获取的;

1,常规使用

注意: 节点上的 ref=“input” 需要和 const input = ref(null)相对应 才能获取到此dom节点

<script setup>
import { reactive, ref, createApp, onMounted } from "vue";

let state = reactive({ text: "信息按钮" });
// 同名的 input来进行获取节点
const input = ref(null);
onMounted(() => {
  if (input.value) {
    input.value.focus();
  }
});
</script>

<template>
  <div class="ref">
    <h3>ref使用:</h3>
    <input type="text" ref="input" /> //  ref="input" 需要和 const input = ref(null); 相对应
  </div>
</template>

<style scoped></style>

2,v-for中的ref获取
有时我们需要 获取循环中的dom节点 并根据状态进行一些操作;
以下案例是:循环list后,并拿到所循环的dom节点 并把钟离的字体颜色变为蓝色:

<script setup>
import { reactive, ref, createApp, onMounted } from "vue";
const refList = ref([]); // 存放dom节点的数组的 获取到的dom节点都在这里

const list = ref([{ name: "钟离" }, { name: "行秋" }, { name: "香菱" }]); // 普通的响应式数据
onMounted(() => {

  // ref列表使用
  if (refList.value) {
    console.log("refList:", refList.value);
   
    // 我拿到了每个循环出来的dom节点 那么我就可以做一些操作了 比如 改变名为钟离的字体颜色
    refList.value.forEach(item=>{
      if(item.innerText === '钟离'){
        item.style.color = "blue"  //钟离的字体颜色改变成功
      }
    })

  }
});
</script>

<template>
  <div class="ref">
    <h4>ref列表循环</h4>
    <ul>
      <li v-for="({ name }, index) in list" ref="refList" :key="index">
        {{ name }}
      </li>
    </ul>
  </div>
</template>

<style scoped></style>

结果如下:
vue3通过ref获取dom节点,vue.js,javascript,前端,vue3
3,组件上的,使用 ref

<script setup>
import { ref, onMounted } from 'vue'
import Child from './Child.vue'

const child = ref(null)

onMounted(() => {
  // child.value 是 <Child /> 组件的实例
})
</script>

<template>
  <Child ref="child" />
</template>

如果一个子组件使用的是选项式 API 或没有使用 <script setup>,这意味着父组件对子组件的每一个属性和方法都有完全的访问权;

如果使用了 <script setup> 的组件是默认私有的:一个父组件无法访问到一个使用了 <script setup> 的子组件中的任何东西,除非子组件在其中通过 defineExpose 宏显式暴露:如下:

<script setup>
import { ref } from 'vue'
const a = 1
const b = ref(2)
defineExpose({
  a,
  b
})
</script>

当父组件通过模板引用获取到了该组件的实例时,得到的实例类型为 { a: number, b: number } (ref 都会自动解包,和一般的实例一样)。文章来源地址https://www.toymoban.com/news/detail-560996.html

到了这里,关于vue3 - vue3中使用ref来获取dom节点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue3】vue3通过ref获取元素离顶部的距离

    vue3版本 ^3.2.45 [ref].value.$el.getBoundingClientRect().top 通过ref获取元素。 使用 getBoundingClientRect().top 获取离顶部的距离 homeView.vue

    2024年02月15日
    浏览(54)
  • React 中的 ref 如何操作 dom节点,使输入框获取焦点

    .focus() 获取焦点 当用户点击按钮时, handleClick 函数会被调用,从而将焦点聚焦到文本输入框上。 定义一个名为 handleClick 的函数。当按钮被点击时,这个函数会被调用。在函数内部,我们通过 inputRef.current 获取到 inputRef 引用所指向的 DOM 元素,并调用其 focus 方法,将焦点聚

    2024年02月09日
    浏览(46)
  • 【vue2第十二章】ref和$refs获取dom元素 和 vue异步更新与$nextTick使用

    为什么会有 ref 和 $refs? 因为在vue页面中使用dom查找元素,不管你是不是在子组件里面查找,查找的都是整个页面的元素,如果你想查找单独组件里面的元素是不容易实现的,除非把每个组件的class写成独一无二,但是在日常开发中,一个vue页面不知道会有多少组件,所以出

    2024年02月09日
    浏览(40)
  • 2023-06-22 使用事件委托来为所有子节点绑定事件,e.target和this的区别,vue获取DOM节点的常见方法

    1.使用事件委托为子节点绑定事件 2.e.target和this的区别 形参e是指 事件对象 , e.target是返回 触发事件的对象 e.target与this的区别 比如: 在事件委托中,把点击事件绑定给父节点(ul)时, this返回的是绑定点击事件的元素,也就是ul 而e.target返回的是被点击的某个子节点,也就是li 3.vue中

    2024年02月10日
    浏览(51)
  • Vue3之ref取render形式组件jsx元素节点

    [2023 年 7 月 28 日 22:16:06] 一开始注意到组件 setup 和 render 一起使用的情况,好奇怎么通过 ref 取到 render 中 jsx 里的节点,一开始试了以下的尝试,结果是 undefined 的: 后来经过大佬指点,改成以下形式: render 这一步就很像 react 里 jsx 的写法了,react 里也有回调 ref,都是一样

    2024年02月15日
    浏览(44)
  • vue3创建和获取循环动态ref

    定义如下: 然后在需要循环赋值ref的元素上使用setRef,具体如下 此时每个元素的值便都存boxRefs数组中了,使用方法和使用数组无异,如下

    2024年02月16日
    浏览(43)
  • vue3中ref获取子组件的值

    一、 script setup 通过ref获取子组件的值或方法 父组件: 子组件: 二、setup()通过ref获取子组件值 父组件: 子组件:

    2024年02月16日
    浏览(37)
  • uniapp中开发小程序使用ref获取dom实例,一直显示undefined,竟然发现是这个原因!

    小程序是不能使用getElementById之类的dom api,所以考虑使用ref来获取dom元素,但事实上并不是如此,绑定ref后并没有输出我想要的dom元素。 既然console.log(this.$refs.iRef)为undefined,会不会this.$refs也是undefined?然而this.$refs是有值的,就是没有iRef,那么到底是为什么? 会不会是需要

    2024年02月11日
    浏览(43)
  • vue3 ts获取组件 ref元素的值

    在 Vue 3 + TypeScript 中,要获取组件 ref 元素的值,可以通过 ref 函数创建一个 ref,并将其绑定到组件的 ref 属性上。然后,可以通过访问 ref 的 .value 属性来获取该组件的实例。 以下是一个示例代码: 在上述代码中,我们首先使用 ref 函数创建了一个名为 childComponentRef 的 ref,并

    2024年02月05日
    浏览(46)
  • vue - 动态绑定ref(使用变量)以及获取方式,解决v-for循环嵌套自定义子组件时无法this.$refs.xx找到动态组件的情况(详细示例教程)适合 vue.js nuxt.js uniapp

    正常情况,我们需要在vue中获得某个dom或者组件,我们会通过绑定 ref 然后通过绑定后的名字来获取这个dom 。 但是,如果我们在v-for中绑定ref的话,那么这个ref就会存在多个,比如我们点击事件让对应的显示/隐藏的话,我们很难找到这个对应的元素。 那么,这时我们需要动

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包