Vue响应式工具

news/2024/10/23 7:34:40/

Vue数据检测:isRef()、isReactive()、isReadonly()

isRef:检测是否为ref数据,返回布尔值

isReactive:检测是否为reactive数据,返回布尔值

isReadonly: 检测是否为readonly只读数据, 返回布尔值

**当readony包裹ref数据时,isRef和isReadonly都为ture **

当readony包裹reactive数据时,isReactive和isReadonly都为ture

const name = ref('高启强')
const nameData = readonly(name)isReadonly(nameData)  // true
isRef(nameData)  // true

完整示例:

<script setup>
import { ref, reactive, readonly, isRef, isReactive, isReadonly } from 'vue'const name = ref('高启强')
const obj = reactive({name: '高启盛',age: 28
})
const nameData = readonly(name)
const objData = readonly(obj)isRef(name)           // true
isReactive(obj)       // true
isReadonly(nameData)  // tureisRef(obj)         // false
isReactive(name)   // false
isReadonly(name)   // false// 注意:nameData虽然是readonly包裹的只读数据,但里面包裹的是ref数据。所以isRef检测返回true, isReadonly也会返回true
isRef(nameData)     // true
isReactive(objData) // true
</script>

ref数据转换:toRef()

toRef是用于将对象中的一个属性转为ref数据

toRef有两个参数, 第一个参数是要转的目标对象,第二个参数是对象属性

<script setup>
import { toRef, isRef } from 'vue'const obj = {name: '高启强'
}
const myName = toRef(obj, 'name')console.log(isRef(myName));  // true
console.log(myName.value); //  高启强
</script>

ref数据批量转换:toRefs()

toRefs从名字就可以看出来是和toRef差不多,他们的区别就是toRef可以将一个属性转为ref数据,toRefs是将所有属性转为ref数据

toRefs和解构一起使用更方便

<script setup>
import { reactive, toRefs } from 'vue'const obj = reactive({name: '高启强',age: 28
})
// toRefs(obj) 返回的是一个像这样的对象 { name: { value: '高启强' }, age: { value: 28 }  }
// 1.通过toRefs转为ref,2.通过解构的方式拿出name和age
const { name, age } = toRefs(obj)console.log(name.value);  // 高启强
console.log(age.value); //  28
</script>

http://www.ppmy.cn/news/66433.html

相关文章

class其实是function的语法糖,底层继承实现还是基于原型链

定义在原型上的方法与定义在构造函数内部的方法不同 function Person(name, age) {this.name name;this.age age;}Person.prototype.greet function() {console.log("Hello, my name is " this.name);};const person new Person("Alice", 25);functio…

Ubuntu执行定时命令的方法

简单使用如下 输入下面的命令安装at&#xff1a; sudo apt-get install at输入下面的命令&#xff1a; # e.g. at 22:04 2021-7-7 at [time] [date]接着输入自己想要执行的命令&#xff0c;按CtrlD结束输入。 接着自己的命令即可定时执行。 详细使用 生活中&#xff0c;我…

React 的源码与原理解读(十二):Hooks解读之一 useCallbackuseMemo

写在专栏开头&#xff08;叠甲&#xff09; 作者并不是前端技术专家&#xff0c;也只是一名喜欢学习新东西的前端技术小白&#xff0c;想要学习源码只是为了应付急转直下的前端行情和找工作的需要&#xff0c;这篇专栏是作者学习的过程中自己的思考和体会&#xff0c;也有很多参…

Educational Codeforces Round #148 (Rated for Div.2) A~C

A. New Palindrome 题意&#xff1a; 给定一个回文字符串&#xff0c;问是否可以调换其中两个字符&#xff0c;得到另一个不同的回文字符串。 思路&#xff1a; 题目的条件给的宽松&#xff0c;只是询问是否可以调换&#xff0c;并没有要求调换的位置。 方法一&#xff1a;…

LeetCode5. 最长回文子串

写在前面&#xff1a; 题目链接&#xff1a;LeetCode5. 最长回文子串 编程语言&#xff1a;C 题目难度&#xff1a;中等 一、题目描述 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例…

数据库系统工程师——第三章 数据结构与算法

文章目录 &#x1f4c2; 第三章、数据结构与算法 &#x1f4c1; 3.1 线性结构 &#x1f4d6; 3.1.1 线性表 &#x1f4d6; 3.1.2 栈和队列 &#x1f4d6; 3.1.3 串 &#x1f4c1; 3.2 数组和矩阵 &#x1f4c1; 3.3 树和图 &#x1f4d6; 3.3.1 树 &#x1f4d6; 3.3.2 图 &…

windows 编译 opencv

编译需要的基础工具 #cmake是配置构建工具&#xff0c;mingw是编译工具 cmake CMake是一款跨平台的编译管理工具&#xff0c;可以自动生成各种不同编译环境&#xff08;如Makefile、Visual Studio Solution等&#xff09;&#xff0c;从而实现在不同平台上进行代码编译的目的…

亲测好用|甲方、专家和领导,用三维模型汇报方案如何投其所好?

身为设计方的你&#xff0c;有没有这样的经历&#xff1a; ➤ 一个非常优秀的方案未能被甲方采纳&#xff0c;反而甲方选择了一个不如自己的方案&#xff0c;造成了很大的遗憾&#xff1b; ➤ 在讲述自己的设计方案的时候&#xff0c;经常越说越散&#xff0c;甚至到了最后自…