vue3的ref和reactive原理

78 阅读1分钟

Vue3中的ref和reactive相关内容以及实现原理。

第一,它们都是用来定义响应式数据的:

ref用来处理基本类型数据

  
import {reffrom 'vue'  
  
const count = ref(0)  
reactive用来处理对象或数组  
  
Copy code  
  
import {reactive} from 'vue  
  
const user = reactive({  
  name: 'John',  
  age: 20  
})  

第二,原理层面它们的区别:

  • ref内部通过一个RefImpl类封装值,并用getter/setter实现响应式
  • reactive内部通过使用Proxy代理对象来实现对属性的追踪

第三,使用层面它们的主要区别是:

  • ref定义的值在模板中需要解构 reactive定义的值可以直接使用
    如果将ref在reactive中使用,它会自动解套,所以可以灵活组合使用
    总结:

  • ref更适合基本类型数据,reactive更适合对象
    原理上ref用类封装,reactive用Proxy代理
    使用上可以根据需要选择,也可以二者组合
    以上从定义、原理和使用层面详细解释了ref和reactive