Vue3 中的 ref 和 reactive?
Type differentiator only. We need this to be in public d.ts but don’t want it to show up in IDE autocomplete, so we use a private Symbol instead.
以上是 Ref 的注释, ref 和 reactive 都可以将数据转换为响应式, 文档中也只是说 reactive 对象是具有高度的响应式, 我没看明白这句, 他们的区别在哪里?
回答·12
最热
最新
- ref 主要用于基本类型数据一个 ref 代表一个属性,reactive 用于定义整个对象,比如表单数据,reactive 的数据在 js 中可以直接操作,ref 需要操作数据的 value 属性
- 相同:都能对一个变量动态响应,包括对象,基本类型和数组 不同:reactive是深拷贝 生成的对象是原来的副本 ref是浅拷贝 会引用原来的对象
- 相同:都能对一个变量动态响应,包括对象,基本类型和数组 不同:reactive是深拷贝 生成的对象是原来的副本 ref是浅拷贝 会引用原来的对象
- 区别在于,后面你是想改变变量中某一个 key,还是整个变量的值。如果是改变某一个 key,使用 reactive,如果改变整个变量的值,使用 ref。ref,可以代理基本数据,也可以代理引用数据,reactive 只能代理引用数据。只是 ref 代理引用数据时,需要每次将 ref 的 value 值给替换,所以,具体场景,具体对待
- 相同点: 1、都是将变量转为响应式的数据 ,打印出来底层都为RefImpl对象 不同点: 1、ref主要用于基础数据类型(string 、number、booler、null、undefined)转换 2、ref 是浅层次的转换,值用点value 使用 3、reactive 主要用于引用类型(obj,arr)转换 4、reactive 是深层次的转换,值不用点value 使用 5、ref 赋值 整个变量.value就可以,reactive 赋值整个变量需要用到is中的 Object.assign ()方法改变整个变量。 以上仅个人理解
- 引用类型和基本数据类型的区别
- 00000000000000000000
- ref 是 reactive 的封装,如果 ref 定义 应用数据类型,其内部也是使用的 reactive
- ref 是定义基本数据类型用的 reactive 是定义引用类型用的,当然 ref 也能自动转换成 reactive 主要看你传的数据是不是对象
- 就是一个状态变化的深比较与浅比较,简单点说 reactive 就是一个引用类型,就这个区别