Vue学习计划-Vue3--核心语法(二)ref、reactive和toRefs、toRef

1. refreactive
  1. ref创建:基本类型的响应式数据
  • 作用:定义响应式变量
  • 语法:let xxx = ref(初始值)
  • 返回值:一个RefImpl的实例对象,简称ref对象ref,ref对象的value属性是响应式的
  • 注意点:
    • JS中操作数据需要xxx.value,但模板中不需要.value,直接使用即可
    • 对于let name = ref('张三')来说,name不是响应式的,name.value是响应式的
      在这里插入图片描述
  1. reactive定义对象类型的响应式数据
  • 作用:只能定义对象类型
  • 语法:let xxx = reactive({xxx})
  • 返回值: 一个Proxy的实例对象,简称:响应式对象
  • 注意点:reactive定义的响应式数据是“深层次”的
    在这里插入图片描述
  1. ref定义对象类型的响应式数据
    在这里插入图片描述

我们打开浏览器看下控制台,主要看下两个输出,reactive定义对象类型的响应式数据和ref定义的数据的输出:
在这里插入图片描述

可以看出来:ref定义的响应式数据的value输出其实也是Proxy定义的对象,所以ref虽说可以定义基本类型和对象类型,但是定义对象类型还是依赖于reactive

  1. ref对比reactive
  • 宏观角度:
  1. ref用来定义:基本类型数据、对象类型数据
  2. reactive用来定义:对象类型数据
  • 区别:
  1. ref创建的变量必须使用.value(可以使用volar插件自动添加value,配置如下图:)
    在这里插入图片描述
  2. reactive重新分配一个新对象,会失去响应式(可以使用Object.assign去整体替换)
let obj = reactive({name: '小明'})
function changeObj(){
// obj = {name: '小红'} // 这么写页面不更新
// obj = reactive({name: '小红'}) // 这么写页面不更新
Object.assign(obj, {name: '小白'})
}
  • 使用原则:
  1. 若需要一个基本类型的响应式数据,必须使用ref
  2. 若需要一个响应式对象,层级不深,refreactive都可以
  3. 若需要一个响应式对象,且层级较深,推荐使用reactive,(form表单数据推荐使用reactive
2. toRefstoRef
  • 作用:将一个响应式对象中的每一个属性,转换为ref对象
  • 备注:toRefstoRef功能一致,但toRefs可以批量转换
  • 假若reactive定义的响应式对象属性过多,解构是比较好的选择,我们不需要person.xxx
    a. 但是单纯的结构,相当于let name = person.name; let age = person.age,所以解构出来的变量不是响应式的,
    b. 我们想要把解构的变量也变成响应式的,此时就需要用到toRefstoRef,
    c. toRefs是将reactive定义的响应式对象内的每一项都转换为响应式数据,toRef是转换单个数据
    d. 注意,toRefsroRef是将变量转换成ObjectRefImpl类型的数据,等同于ref定义的响应式数据,所以修改我们需要.value;我们在模板中就可以直接使用{{ name }}, {{ age }}

  • 语法如下:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python接口自动化(五)--接口测试用例和接口测试报告模板(详解)

一、简介 当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的…

机器学习-基于Word2vec搜狐新闻文本分类实验

机器学习-基于Word2vec搜狐新闻文本分类实验 实验介绍 Word2vec是一群用来产生词向量的相关模型,由Google公司在2013年开放。Word2vec可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应…

[概率论]四小时不挂猴博士

贝叶斯公式是什么 贝叶斯公式是概率论中的一个重要定理,用于计算在已知一些先验信息的情况下,更新对事件发生概率的估计。贝叶斯公式的表达式如下: P(A|B) P(B|A) * P(A) / P(B) 其中,P(A|B)表示在事件B发生的条件下事件A发生的概…

大文件断点下载Range下载zip包显示文件损坏

问题:大文件下载,其它格式的文件及rar格式的压缩包正常下载但是 之后zip包下载后解压失败 原因分析: 1. 查看上传文件的属性值 如图,10.4kb是已经约去小数点的值,准确的大小应该是10663字节10.4130859375KB,所以用10.…

云原生十二问

一、什么是云原生? 云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支…

python旅游大数据分析可视化大屏 游客分析+商家分析+舆情分析 计算机毕业设计(附源码)Flask框架✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

挑战 ChatGPT 和 Google Bard 的防御

到目前为止,科学家已经创建了基于人工智能的聊天机器人,可以帮助内容生成。我们还看到人工智能被用来创建像 WormGPT 这样的恶意软件,尽管地下社区对此并不满意。但现在正在创建聊天机器人,可以使用生成人工智能通过即时注入活动来…

Nginx - 使用error_page实现带有图片的自定义错误页面

文章目录 概述官网文档需求实现 概述 在Nginx中,您可以使用error_page指令来指定当请求遇到特定错误时应当显示的自定义错误页面。为了实现带有图片的自定义错误页面,可以按照以下步骤操作: 创建错误页面: 首先,需要…

每天刷两道题——第三天

1.1两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换) 输入:[1,2,3,4] 输出:[2,1,4,3…

‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。这个问题如何解决?

这个错误信息 vue-cli-service 不是内部或外部命令,也不是可运行的程序或批处理文件 表示 vue-cli-service 命令在你的系统上未被识别。这通常是因为 Vue CLI 没有被正确安装或其路径没有被加入到系统的环境变量中。以下是几个解决这个问题的步骤: 确认 …

Oracle 日志路径查询介绍

数据库日志分析详解:  ORACEL RAC 体系架构分析  Oracle RAC 包含GI(Grid Infrastructure) 集群软件与Oracle数据库组成。  GI包含两个最主要的组件:Clusterware集群软件和ASM存储软件,这两个软件提供数据库高可用能力。  …

自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程

大家好,我是微学AI,今天给大家介绍一下自然语言处理24-T5模型的介绍与训练过程,利用简单构造数据训练微调该模型,体验整个过程。在大模型ChatGPT发布之前,NLP领域是BERT,T5模型为主导,T5(Text-to-Text Transfer Transformer)是一种由Google Brain团队在2019年提出的自然…