Vue | Vue中 ref 的用法及演示

这篇文章主要介绍了Vue中ref的用法及演示,ref被用来给元素或子组件注册引用信息。引用信息会被注册在父组件上的$refs对象上,下面来看看文章的详细内容,需要的朋友可以参考一下。

ref 定义:被用来给元素或子组件注册引用信息。引用信息会被注册在父组件上的$refs对象上。

  • 如果是在普通的dom元素上使用,引用指向的就是dom元素;
  • 如果用在子组件上,引用指向的就是组件实例。

举例:

组件1:

<template>
  <div>我是{ {name}}</div>
</template>

<script>
  export default {
    name: "Cpn1",

    data() {
      return {
        name: "组件1",
      };
    },
  };
</script>

组件2:

<template>
  <div>我是{ {name}}</div>
</template>

<script>
  export default {
    name: "Cpn2",

    data() {
      return {
        name: "组件2",
      };
    },
  };
</script>

App.vue

<template>
  <div id="app">
    <cpn-1 ref="c1"></cpn-1>
    <cpn-2 ref="c2"></cpn-2>
    <button @click="showDom">按钮</button>
    <h2 ref="title">我是标题</h2>
    <input type="text" ref="input" value="123" />
  </div>
</template>

<script>
  import Cpn1 from "./components/Cpn1.vue";
  import Cpn2 from "./components/Cpn2.vue";

  export default {
    components: {
      Cpn1,
      Cpn2,
    },
    name: "App",
    methods: {
      showDom() {
        console.log(this.$refs.c1);
        console.log(this.$refs.c2.$data.name);
        console.log(this.$refs.title);
        console.log(this.$refs.input.value);

        // 获取一个真实的dom对象并修改值
        var title = this.$refs.title;
        title.innerText = "helloWord";
      },
    },
  };
</script>

执行上面的程序,点击页面上的《按钮》,效果如下:

同时看控制台:

可以看到当 ref 对象用在普通元素上时获取到的是普通DOM元素,当 ref 用在子组件上时,引用指向组件实例。

根据实际需要,可以通过 ref 给元素或者子组件注册引用信息,在需要用到的时候我们可以通过 $refs 获取真实的DOM元素或者组件实例进行我们想要的操作。


参考资料

Vue | Vue中 ref 的用法小结_儒雅的烤地瓜的CSDN博客

Vue | vue中 $refs 的三种用法解读_儒雅的烤地瓜的CSDN博客

Vue | vue中$refs的用法及作用详解_儒雅的烤地瓜的CSDN博客

Vue中ref、reactive、toRef、toRefs、$refs的基本用法总结_vue.js_脚本之家

Vue 3中,`ref` 函数的作用是创建一个响应式的数据对象或者获取组件中的元素。在创建响应式数据对象时,`ref` 函数会将基本类型的数据转换成一个包含 `value` 属性的响应式对象,而引用类型的数据则不会进行转换。 代码示例如下: ```javascript import { ref } from 'vue' // 创建一个响应式数据对象 const count = ref(0) // 访问响应式数据 console.log(count.value) // 输出 0 // 修改响应式数据 count.value++ // 监听响应式数据 watchEffect(() => { console.log(count.value) }) ``` 在上面的代码中,我们使用 `ref` 函数创建了一个名为 `count` 的响应式数据对象,并将其初始值设置为0。我们可以通过 `count.value` 访问响应式数据,并通过 `count.value++` 修改响应式数据。我们还可以使用 `watchEffect` 函数监听响应式数据的变化。 除了创建响应式数据对象外,`ref` 函数还可以用来获取组件中的元素。例如,下面的代码演示了如何使用 `ref` 函数获取组件中的输入框元素: ```vue <template> <div> <input ref="input" type="text" /> <button @click="handleClick">Click me</button> </div> </template> <script> import { ref } from 'vue' export default { setup() { const inputRef = ref(null) const handleClick = () => { inputRef.value.focus() } return { inputRef, handleClick } } } </script> ``` 在上面的代码中,我们使用 `ref` 函数创建了一个名为 `inputRef` 的响应式数据对象,并将其初始值设置为 `null`。然后,在模板中,我们使用 `ref="input"` 将输入框元素赋值给 `inputRef`,并在 `handleClick` 方法中使用 `inputRef.value.focus()` 获取输入框元素并让其获得焦点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值