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

vue 中 ref 详解

一、定义与基本用法

1. 定义

在 Vue.js 中,`ref`是一个用于在组件中获取 DOM 元素或者子组件实例引用的属性。它提供了一种直接访问元素或组件的方式,使得我们可以在 JavaScript 代码中对它们进行操作。

2. 基本使用

在模板中,可以通过给元素或者组件添加`ref`属性来创建引用。

<template>

  <div ref="myDiv">这是一个div元素</div>

</template>

二、在选项式 API 中的使用

1. 访问 DOM 元素

在选项式 API 中,`ref`属性可以用于获取 DOM 元素的引用。

export default {

  mounted() {

    this.$refs.input.focus();

  },

  template: '<input ref="input" type="text">',

};

2. 访问子组件实例

当`ref`用于子组件时,可以获取子组件的实例,从而访问子组件的属性和方法。

// 子组件

export default {

  methods: {

    getChildData() {

      return "子组件数据";

    },

  },

};

在父组件中,可以通过`ref`获取子组件实例并调用子组件的方法

export default {

  mounted() {

    const childComponent = this.$refs.child;

    const childData = childComponent.getChildData();

    console.log(childData);

  },

  template: '<ChildComponent ref="child" />',

  components: {

    ChildComponent,

  },

};

三、在组合式 API 中的使用

1. 创建和访问引用

在组合式 API 中,通常使用`ref`函数(从`vue`模块中导入)来创建引用。

import { ref, onMounted } from "vue";

export default {

  setup() {

    const myDiv = ref(null);

    onMounted(() => {

      console.log(myDiv.value);

    });

    return {

      myDiv,

    };

  },

  template: '<div ref="myDiv">这是一个div元素</div>',

};

2. 与响应式数据的结合使用

`ref`创建的引用可以与其他响应式数据一起使用,用于构建复杂的交互逻辑。

import { ref, watch } from "vue";

export default {

  setup() {

    const buttonRef = ref(null);

    const clickCount = ref(0);

    watch(

      () => buttonRef.value,

      () => {

        if (buttonRef.value) {

          clickCount.value++;

        }

      }

    );

    return {

      buttonRef,

      clickCount,

    };

  },

  template:

    '<button ref="buttonRef" @click="clickCount++">点击我</button> <p>点击次数: {clickCount}</p>',

};


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

相关文章:

  • 移动机器人推动制造业向自动化转升级
  • 数据仓库和数据湖 数据仓库和数据库
  • AI写标书工具:高效智能的标书撰写助手——标小兔
  • 高效设计AI Prompt:10大框架详细对比与应用
  • 【K8S系列】深入解析K8S服务的无状态与有状态
  • CPU、DPU、GPU
  • 华三与华为ACL,及ACL+QOS的区别
  • windows C#-使用对象初始值设定项初始化对象
  • Excel for Finance 04 `IFERROR` 函数
  • ROUGE指标在自然语言处理中的应用:从理论到实践
  • 影刀进阶指令 | liblib反推 (SD AI绘图反推)
  • 基于Springboot的高校宣讲会管理系统设计与实现
  • 【VSCode】工作区及设置
  • 理想的以太网网络故障排查工具:LinkXpert M3
  • 2024年【安全员-C证】考试报名及安全员-C证模拟考试
  • 区块链钱包的解决方案分析
  • 【gopher的java学习笔记】Spring Boot Starter初探
  • 新服务器ubuntu系统相关操作
  • mysql查询行转列并去重
  • 【人工智能】OpenAI最新发布的o1-preview模型,和GPT-4o到底哪个更强?最新分析结果就在这里!