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

:ref

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

this.$refs

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

示例说明

html 复制代码
<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 等。
html 复制代码
<template>
  <img :src="imageUrl" alt="动态图片">
</template>

<script>
export default {
  data() {
    return {
      imageUrl: 'https://example.com/image.jpg'
    };
  }
};
</script>
  • 组件自定义属性:在组件中定义的 props 可以通过动态绑定传递值。
html 复制代码
<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 的规则。

相关推荐
瑞克-桑切斯20 分钟前
企业生产环境:https部署+nginx高可用(业务不中断)
linux·服务器·数据库
非凡ghost4 小时前
视频剪辑不用等渲染,这款开源工具让切分合并秒级完成
运维·电脑·软件需求
FII工业富联科技服务6 小时前
Omniverse 数字孪生与柔性自动化,如何破解产能与交付、设备与空间的双重困境?
运维·自动化·devops
润滑卫士6 小时前
油液介电常数在线监测:测量原理与油液老化状态评估方法
运维
Rock Chin6977 小时前
把 n8n 接进 Slack:在对话里 @机器人 触发自动化工作流
运维·机器人·自动化
浩浩测试一下7 小时前
Linux 底层知识点 1
linux·运维·服务器
Eloudy7 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技8 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu8 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
发量惊人的中年网工8 小时前
分公司访问总部ERP慢怎么办?SD-WAN组网的排查与验收要点
服务器·开发语言·php