当前位置: 首页 > article >正文

:ref 和 this.$refs 的区别及 $ 的作用


:ref

在 Vue 模板中,:ref 这种写法是使用了 Vue 的动态绑定语法(: 是 v-bind: 的缩写)。ref 是一个特殊的属性,用于给元素或组件注册引用信息。当你使用 :ref 时,通常是在动态地为元素或组件设置引用名称,例如在循环中为每个元素或组件分配不同的引用名。

this.$refs

在 Vue 实例的 script 部分,this.$refs 是一个对象,它存储了所有通过 ref 属性注册的元素或组件的引用。$ 是 Vue 实例的一个特殊前缀,用于区分 Vue 实例自带的属性和方法与用户自定义的属性和方法。this.$refs 是 Vue 提供的一个内置属性,用于访问这些引用。


示例说明

<template>
  <div>
    <!-- 静态绑定 ref -->
    <input ref="myInput" type="text">
    <!-- 动态绑定 ref -->
    <input :ref="dynamicRefName" type="text">
  </div>
</template>

<script>
export default {
  data() {
    return {
      dynamicRefName: 'dynamicInput'
    };
  },
  mounted() {
    // 通过 this.$refs 访问静态绑定的输入框
    console.log(this.$refs.myInput);
    // 通过 this.$refs 访问动态绑定的输入框
    console.log(this.$refs.dynamicInput);
  }
};
</script>

2. 动态绑定是否可以绑定任意属性到标签上

在 Vue 中,动态绑定(v-bind 或其缩写 :)可以绑定大部分 HTML 属性和 Vue 组件的自定义属性,但有一些限制和特殊情况需要注意:


可以动态绑定的属性

  • HTML 属性:如 id、class、style、src、href 等。
<template>
  <img :src="imageUrl" alt="动态图片">
</template>

<script>
export default {
  data() {
    return {
      imageUrl: 'https://example.com/image.jpg'
    };
  }
};
</script>
  • 组件自定义属性:在组件中定义的 props 可以通过动态绑定传递值。
  • <template>
      <MyComponent :propName="propValue"></MyComponent>
    </template>
    
    <script>
    import MyComponent from './MyComponent.vue';
    
    export default {
      components: {
        MyComponent
      },
      data() {
        return {
          propValue: '动态传递的值'
        };
      }
    };
    </script>

    限制和特殊情况

  • 保留属性:一些 HTML 标签的保留属性(如 is、ref、key 等)有特殊的用途,虽然可以动态绑定,但需要遵循 Vue 的规则。
  • 事件监听器:事件监听器使用 v-on 或其缩写 @ 来绑定,而不是 v-bind。
  • 指令:Vue 指令(如 v-if、v-for 等)不能直接通过 v-bind 动态绑定,它们有自己的语法。

综上所述,动态绑定可以绑定大部分属性,但需要根据具体情况遵循 Vue 的规则。


http://www.kler.cn/a/597749.html

相关文章:

  • OpenCV HighGUI 模块使用指南(Python 版)
  • C++红黑树实现
  • Python:生成器及三者关系
  • c++之迭代器
  • C之(15)cppcheck使用介绍
  • nano 是一个简单易用的命令行文本编辑器,适合在终端中快速编辑文件。它比 vi 或 vim 更容易上手,特别适合初学者
  • 电阻的阻值识别
  • 【weixin9007】基于微信小程序的医院管理系统
  • 机器学习实战之数据预处理、监督算法、无监督算法、模型评估与改进-思维导图拆分篇
  • 描述@keyframes规则在 CSS 动画中的原理及作用,如何创建一个简单的动画
  • Java八股
  • 如何在 Vue 项目中使用混入(Mixin),它有哪些优缺点?
  • linux 系统时间不准解决办法
  • Mysql配套测试之更新篇
  • 红黑树1.0
  • MongoDB未授权访问漏洞
  • Go红队开发—CLI框架(一)
  • IDEA修改默认作者名称
  • 【杂记二】git, github, vscode等
  • Rust嵌入式开发环境搭建指南(基于Stm32+Vscode)