Vue3 ref属性

ops/2025/2/9 2:38:34/

ref()

接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。

function ref<T>(value: T): Ref<UnwrapRef<T>>interface Ref<T> {value: T
}

详细信息

  1. ref 对象是可更改的,也就是说你可以为 .value 赋予新的值。它也是响应式的,即所有对 .value 的操作都将被追踪,并且写操作会触发与之相关的副作用。
  2. 如果将一个对象赋值给 ref,那么这个对象将通过 reactive() 转为具有深层次响应式的对象。这也意味着如果对象中包含了嵌套的 ref,它们将被深层地解包。
  3. 若要避免这种深层次的转换,请使用 shallowRef() 来替代。

示例

import { ref, defineComponent } from 'vue';
export default defineComponent ({setup () {const valueNumber = ref(0);const valueString = ref('hello world!');const valueBoolean = ref(true);const valueNull = ref(null);const valueUndefined = ref(undefined);console.log(valueNumber.value) // 0valueNumber.value++console.log(valueNumber.value) // 1return {valueNumber,valueString,valueBoolean,valueNull,valueUndefined};}
});

在template中访问ref创建的响应式数据

import { ref } from 'vue';
export default {setup () {const value = ref(1);return {value,msg: 'hello world!'};}
};
<template><p>{{ value }} {{ msg }}</p>
</template>

为ref()标注类型

ref 会根据初始化时的值推导其类型:

import { ref } from 'vue'// 推导出的类型:Ref<number>
const year = ref(2020)// => TS Error: Type 'string' is not assignable to type 'number'.
year.value = '2020'

有时我们可能想为 ref 内的值指定一个更复杂的类型,可以通过使用 Ref 这个类型:

import { ref } from 'vue'
import type { Ref } from 'vue'const year: Ref<string | number> = ref('2020')year.value = 2020 // 成功!

或者,在调用 ref() 时传入一个泛型参数,来覆盖默认的推导行为:

// 得到的类型:Ref<string | number>
const year = ref<string | number>('2020')year.value = 2020 // 成功!

如果你指定了一个泛型参数但没有给出初始值,那么最后得到的就将是一个包含 undefined 的联合类型:

// 推导得到的类型:Ref<number | undefined>
const n = ref<number>()

作为程序员,持续学习和充电非常重要,作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。低代码也是一个值得我们深入探索的领域,让我们拭目以待,它将给前端世界带来怎样的变革,推荐一个低代码工具。

应用地址: https://www.jnpfsoft.com
开发语言:Java/.net

这是一个基于Flowable引擎(支持java、.NET),已支持MySQL、SqlServer、Oracle、PostgreSQL、DM(达梦)、 KingbaseES(人大金仓)6个数据库,支持私有化部署,前后端封装了上千个常用类,方便扩展,框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用。

至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端 UI 等组件,这种情况下我们避免了重复造轮子,已内置大量的成熟组件,选择合适的组件进行集成或二次开发复杂功能,即可自主开发一个属于自己的应用系统。


http://www.ppmy.cn/ops/156863.html

相关文章

在C#中使用DeepSeek API实现自然语言处理、文本分类、情感分析等

在C#中使用DeepSeek API可以实现多种功能&#xff0c;例如自然语言处理、文本分类、情感分析等。以下是具体的实现方法和步骤&#xff1a; 准备工作 获取API密钥&#xff1a;访问DeepSeek官网&#xff08;DeepSeek&#xff09;&#xff0c;注册账号并获取API密钥。 安装必要的…

判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0

要判断您的Mac当前使用的是Zsh还是Bash&#xff0c;可以使用以下方法&#xff1a; 查看默认Shell: 打开“终端”应用程序&#xff0c;然后输入以下命令&#xff1a; echo $SHELL这将显示当前默认使用的Shell。例如&#xff0c;如果输出是/bin/zsh&#xff0c;则说明您使用的是Z…

ES6- 代码编程风格(let、字符串、解构赋值)

1.let 取代 var 2.全局常量和线程安全 在let 和 const 之间&#xff0c;建议优先使用const, 尤其在全局环境中&#xff0c;不应该设置变量&#xff0c;只应设置常量。 //bad var a1, b2, c3 //goodconst a1; const b2;const c3;//best const [a, b, c] [1, 2, 3] 3.字符串…

Docker深度解析:部署 SpringBoot 项目

方式一&#xff1a;通过两个容器部署 前端部署&#xff1a; 修改前端访问端口 ip 为服务器 ip&#xff0c;打包前端&#xff1a;npm run build:prod创建文件夹&#xff0c;放置前端部署需要的文件&#xff0c;并将打包的前端 dist 文件放到此文件编写 default.conf 配置文件&am…

产品经理的人工智能课 02 - 自然语言处理

产品经理的人工智能课 02 - 自然语言处理 1 自然语言处理是什么2 一个 NLP 算法的例子——n-gram 模型3 预处理与重要概念3.1 分词 Token3.2 词向量化表示与 Word2Vec 4 与大语言模型的交互过程参考链接 大语言模型&#xff08;Large Language Models, LLMs&#xff09;是自然语…

流式传输的实现为什么需要缓存?

流式传输的实现通常确实需要使用缓存&#xff08;或称缓冲&#xff09;。这里解释一下为什么缓存是必要的以及它是如何工作的&#xff1a; 为什么需要缓存&#xff1f; 网络波动&#xff1a;互联网连接的速度和稳定性可能会发生变化。缓存可以确保在网络变慢或中断时&#xf…

实际时钟(RTC)的介绍

一、RTC介绍 RTC&#xff1a;实时时钟(Real-Time Clock)的缩写&#xff0c;是一种集成电路&#xff0c;通常称为时钟芯片。 应用&#xff1a;广泛应用于消费类电子产品&#xff0c;提供精确的实时时间或为电子系统提供时间基准。 工作原理&#xff1a;采用精度较高…

Redis企业开发实战(二)——点评项目之商户缓存查询

目录 一、缓存介绍 二、缓存更新策略 三、如何保证redis与数据库一致性 1.解决方案概述 2.双写策略 3.双删策略 3.1延迟双删的目的 4.数据重要程度划分 四、缓存穿透 (一)缓存穿透解决方案 (二)缓存穿透示意图 五、缓存雪崩 (一)缓存雪崩解决方案 (二)缓存雪崩…