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

Vue 3 中动态赋值 ref 的应用

引言

Vue 3 引入了许多新特性,其中之一便是 Composition API。Composition API 提供了一种新的编程范式,使开发者能够更灵活地组织和复用逻辑。其中 ref 是一个核心概念,它允许我们在组件内部声明响应式的状态。本文将探讨如何在 Vue 3 中使用 ref 进行动态赋值,并通过一个具体的例子来说明这一过程。

什么是 ref

在 Vue 3 中,ref 是一个函数,它接受一个值作为参数,并返回一个带有 .value 属性的对象。这个对象的 .value 属性是响应式的,这意味着任何对 .value 的更改都会触发依赖此数据的视图重新渲染。这对于管理组件内的状态非常有用。

动态赋值 ref 的场景

在某些情况下,我们需要在运行时动态地给 ref 赋值,尤其是在处理 DOM 元素时。例如,当我们需要初始化一个图表,并且图表容器是由一个 DOM 元素提供的,这时候就需要在 DOM 渲染完毕后,获取到这个元素,并将其赋值给 ref,以便后续操作。

实现示例

让我们通过一个简单的 Vue 3 组件来演示如何动态赋值 ref。假设我们要创建一个包含一个图表的组件,并且需要在图表初始化时传递一个 DOM 元素作为图表的容器。

1. 创建 Vue 3 组件

首先,我们需要创建一个 Vue 3 组件,并在其中定义一个 ref 来存储我们的图表容器。

<template><div :ref="setChartRef" style="width: 100%; height: 350px"></div>
</template><script setup>
import { ref } from 'vue';const chartRef = ref(null); // 初始化为空// 动态赋值函数
const setChartRef = (e) => {chartRef.value = e;
};
</script>

2. 初始化图表

接下来,我们需要在组件挂载完成后初始化图表,并使用 chartRef 获取到图表容器。

<script setup>
import { ref, onMounted } from 'vue';
import * as echarts from 'echarts';const chartRef = ref(null); // 初始化为空// 动态赋值函数
const setChartRef = (e) => {chartRef.value = e;
};// 组件挂载完成后的生命周期钩子
onMounted(() => {if (chartInstance.value) {// 销毁已存在的图表实例chartInstance.value.dispose();}const chartInstance = echarts.init(chartRef.value);chartInstance.setOption({title: { text: '动态赋值 ref 示例' },tooltip: {},xAxis: {data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]});// 保存图表实例chartInstance.value = chartInstance;
});
</script>

在这个示例中,我们使用了 Vue 3 的 onMounted 生命周期钩子,在组件挂载完成后初始化图表。chartInstance 用于存储图表实例,以便我们可以在需要的时候访问它。

3. 总结

通过以上示例,我们展示了如何在 Vue 3 中使用 ref 来动态赋值,并利用这一特性来初始化一个图表。这种方法不仅提高了代码的可维护性,还使得状态管理变得更加清晰和直观。

动态赋值 ref 的应用场景非常广泛,除了图表初始化之外,还可以用于处理用户输入、DOM 操作等。

 

相关文章:

Vue 3 中动态赋值 ref 的应用

引言 Vue 3 引入了许多新特性&#xff0c;其中之一便是 Composition API。Composition API 提供了一种新的编程范式&#xff0c;使开发者能够更灵活地组织和复用逻辑。其中 ref 是一个核心概念&#xff0c;它允许我们在组件内部声明响应式的状态。本文将探讨如何在 Vue 3 中使…...

Spring Boot-应用启动问题

在使用 Spring Boot 进行开发时&#xff0c;应用启动问题是开发人员经常遇到的挑战之一。通过有效排查和解决这些问题&#xff0c;可以提高应用的稳定性和可靠性。 1. Spring Boot 启动问题的常见表现 Spring Boot 应用启动失败通常表现为以下几种情况&#xff1a; 应用启动…...

深入解析:如何通过网络命名空间跟踪单个进程的网络活动(C/C++代码实现)

在 Linux 系统中&#xff0c;网络命名空间&#xff08;Network Namespaces&#xff09;是一种强大的功能&#xff0c;它允许系统管理员和开发者隔离网络资源&#xff0c;使得每个命名空间都拥有独立的网络协议栈。这种隔离机制不仅用于容器技术如 Docker&#xff0c;也是网络安…...

C++ 科目二 [const_cast]

基础数据类型 const_cast 仅仅是深层拷贝改变&#xff0c;而不是改动之前的值 如果需要使用改动后的值&#xff0c;需要通过指针或者引用来间接使用 const int n 5; const string s "MyString";// cosnt_cast 针对指针&#xff0c;引用&#xff0c;this指针 // co…...

【电脑组装】✈️从配置拼装到安装系统组装自己的台式电脑

目录 &#x1f378;前言 &#x1f37b;一、台式电脑基本组成 &#x1f37a;二、组装 &#x1f379;三、安装系统 &#x1f44b;四、系统设置 &#x1f440;五、章末 &#x1f378;前言 小伙伴们大家好&#xff0c;上篇文章分享了在平时开发的时候遇到的一种项目整合情况&…...

Hadoop生态圈拓展内容(一)

1. Hadoop的主要部分及其作用 HDFS&#xff08;Hadoop分布式文件系统&#xff09; HDFS是一个高容错、高可靠性、高可扩展性、高吞吐率的分布式文件存储系统&#xff0c;负责海量数据的存储。 YARN&#xff08;资源管理调度系统&#xff09; YARN是Hadoop的资源管理调度系统…...

使用随机森林模型在digits数据集上执行分类任务

程序功能 使用随机森林模型对digits数据集进行手写数字分类任务。具体步骤如下&#xff1a; 加载数据&#xff1a;从digits数据集中获取手写数字图片的特征和对应的标签。 划分数据&#xff1a;将数据集分为训练集和测试集&#xff0c;测试集占30%。 训练模型&#xff1a;使用…...

后端开发刷题 | 打家劫舍

描述 你是一个经验丰富的小偷&#xff0c;准备偷沿街的一排房间&#xff0c;每个房间都存有一定的现金&#xff0c;为了防止被发现&#xff0c;你不能偷相邻的两家&#xff0c;即&#xff0c;如果偷了第一家&#xff0c;就不能再偷第二家&#xff1b;如果偷了第二家&#xff0…...

欧美游戏市场的差异

欧洲和美国的游戏市场虽然高度发达且利润丰厚&#xff0c;但表现出由文化偏好、消费者行为、监管环境和平台受欢迎程度塑造的独特特征。这些差异对于寻求为每个地区量身定制策略的游戏开发商和发行商来说非常重要。 文化偏好和游戏类型 美国&#xff1a;美国游戏市场倾向于青…...

DeDeCMS靶场漏洞复现

打开靶场地址 姿势一&#xff1a;通过文件管理器上传webshell 1.登录后台 dedecms默认的后台登录地址为/dede 2.在附加管理里的文件式管理器中有文件上传 3.上传木马文件 4.访问木马文件 并连接 姿势二&#xff1a;修改模板文件获取webshell 1.点击模板里面的默认模板管理 …...

Transformer模型详细步骤

Transformer模型是nlp任务中不能绕开的学习任务&#xff0c;我将从数据开始&#xff0c;每一步骤都列举出来&#xff0c;然后对应重点的代码进行讲解 ------------------------------------------------------------------------------------------------------------- Trans…...

LC并联电路在正弦稳态下的传递函数推导(LC并联谐振选频电路)

LC并联电路在正弦稳态下的传递函数推导&#xff08;LC并联谐振选频电路&#xff09; 本文通过 1.解微分方程、2.阻抗模型两种方法推导 LC 并联选频电路在正弦稳态条件下的传递函数&#xff0c;并通过仿真验证不同频率时 vo(t) 与 vi(t) 的幅值相角的关系。 电路介绍 已知条件…...

【前后端】大文件切片上传

Ruoyi框架上传文件_若依微服务框架 文件上传-CSDN博客 原理介绍 大文件上传时&#xff0c;如果直接上传整个文件&#xff0c;可能会因为文件过大导致上传失败、服务器超时或内存溢出等问题。因此&#xff0c;通常采用文件切片&#xff08;Chunking&#xff09;的方式来解决这些…...

图像处理 -- ISP功能之局部对比度增强 LCE

局部对比度增强&#xff08;LCE&#xff09; 局部对比度增强&#xff08;Local Contrast Enhancement, LCE&#xff09;是一种图像处理技术&#xff0c;旨在通过调整图像的局部区域对比度&#xff0c;增强图像细节和视觉效果。LCE 的实现方式多种多样&#xff0c;以下是几种常…...

C++速通LeetCode简单第5题-回文链表

解法1&#xff0c;堆栈O(n)简单法&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListN…...

【Java 优选算法】双指针(下)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 有效三角形的个数 题目链接 解法 解法1:暴力枚举--->O(n^3) 解法2:利用单调性,使用双指针来解决---->O(n^2) 优化:对整个数组进行排序先固定最大数在最大数的左…...

动态规划:07.路径问题_珠宝的最大价值_C++

题目链接&#xff1a;LCR 166. 珠宝的最高价值 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/description/ 一、题目解析 题目&#xff1a; 解析&#xff1a; 有过做前几道题的经验&#xff0c;我们会发现这道题其实就…...

COMDEL电源CX2500S RF13.56MHZ RF GENERATOR手侧

COMDEL电源CX2500S RF13.56MHZ RF GENERATOR手侧...

GPU加速生物信息分析的尝试

GPU工具分类 实话实说&#xff0c;暂时只有英伟达的GPU才能实现比较方便的基因组分析集成化解决方案&#xff0c;其他卡还需要努力呀&#xff0c;或者需要商业公司或学术团体的努力开发呀&#xff01;FPGA等这种专用卡的解决方案也是有的&#xff0c;比如某测序仪厂家&#xf…...

【零散技术】详解Odoo17邮件发送(一)

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo的邮件功能十分强大&#xff0c;在非常多的场景中可以看见其应用&#xff0c;例如原生的用户邀请&#xff0c;报价单发送&#xff0c;询价单发送等等.... 那么抛开原生自带的功能&#xff0c;我们如何巧妙的通过代码进行自…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...