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

【vue for beginner】ref和reactive

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

在 Vue 3 中,ref 和 reactive 是用于创建响应式数据的两种主要方法。

ref

用法
ref 用于创建一个基本数据类型的响应式引用(如字符串、数字、布尔值等)或对象的引用。
通过 .value 属性访问和修改其值。
示例

import { ref } from 'vue';

const count = ref(0);

function increment() {
    count.value++;
}

reactive

用法
reactive 用于创建一个响应式对象,适用于更复杂的数据结构,如对象和数组。
直接访问和修改对象的属性。
示例

import { reactive } from 'vue';

const state = reactive({
    count: 0,
    message: 'Hello, Vue!'
});

function increment() {
    state.count++;
}

区别

在这里插入图片描述

总结

  • 若需要一个基本类型的响应式数据,必须使用ref。
  • 若需要一个响应式对象,层级不深,ref、reactive都可以,推荐用reactive。
  • 若需要一个响应式对象,且层级较深,推荐使用reactive。
  • ref创建的变量必须使用.value(可以使用volar插件自动添加.value)
  • reactive重新分配一个新对象,会失去响应式(可以使用Object.assign去整体替换)。

💡 reactive响应式怎么理解

在 Vue 3 中,使用 reactive 创建的对象是响应式的,但如果你重新分配一个新对象给这个响应式对象的引用,它将失去响应性。

理解响应式的基本原理

响应式对象:

使用 reactive 创建一个对象时,Vue 会通过代理(Proxy)机制使这个对象的属性变得响应式。这意味着当你修改对象的属性时,Vue 会自动更新依赖于这些属性的组件。
重新分配新对象:

直接将一个新对象赋值给原来的响应式对象,例如:

const state = reactive({ count: 0 });
state = { count: 1 }; // 失去响应性

state 现在引用了一个新的对象,而原来的 state 对象仍然是响应式的,无法再通过 state 访问到它。

使用 Object.assign

为了保持响应性并更新对象的内容,可以使用 Object.assign 或扩展运算符(spread operator)来更新对象的属性,而不是重新赋值整个对象。例如:

使用 Object.assign

Object.assign(state, { count: 1 });

使用扩展运算符
能达到更新state的目的,但是会导致失去响应性

state = { ...state, count: 1 }; // 不推荐,因为这会导致失去响应性

总结

失去响应性: 重新分配一个新对象会使原有的响应式对象失去响应性。
使用 Object.assign: 通过 Object.assign 方法更新属性,可以保持对象的响应性。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述


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

相关文章:

  • 【ArkTS】使用AVRecorder录制音频 --内附录音机开发详细代码
  • #JAVA-常用API-爬虫
  • 项目搭建+添加
  • repo仓库转移到自己本地的git服务器
  • LuaForWindows_v5.1.5-52.exe
  • Ajax基础总结(思维导图+二维表)
  • SQL面试题——日期交叉问题 合并日期重叠的活动
  • 基于单片机的多功能宠物窝的设计
  • 什么是名称服务器?(它如何工作?)
  • Zariski交换代数经典教材Commutative Algebra系列(pdf可复制版)
  • 数据结构初阶--算法复杂度(1)
  • 查看虚拟机的MAC地址
  • 02_Django路由Router
  • 【基础分析】——Qt 信号和槽的机制 优点
  • LeetCode-430. 扁平化多级双向链表-题解
  • R语言实用技巧--用get函数配合dplyr包传参
  • 【NLP 8、normalization、sigmoid,softmax归一化函数】
  • 基于Java Springboot奶茶点餐微信小程序
  • 短视频矩阵的营销策略:批量混剪实现高效传播
  • Qt数据库操作-QSqlQueryModel 的使用
  • 【nlp】模型文件构成
  • 嵌入式入门Day22
  • 学习JavaEE的日子 Day36 字符流
  • 三菱汽车决定退出中国市场,发展重心转移至东南亚
  • 优先算法 —— 双指针系列 - 三数之和
  • 机器学习:机器学习项目的完整周期