为什么这里用的是ref而不是reactive

来源:4-2 实现demo项目

慕莱坞0998854

2021-03-23

老师的代码写的是

const schemaRef: Ref<any> = ref(schema)

而schema为

const schema = {
  type: 'string',
}

什么时候需要用ref而什么时候又该用reactive呢?我肤浅的理解是对于基础类型就用ref,对象的话就用reactive. 可是这里schema是一个对象,老师却用的是ref.

原因是否为

try {
    schema = JSON.parse(code)
} catch (error) {}
schemaRef.value = schema

虽然schema是一个对象,但是我们这里代码的意思是直接赋值给schema一个新的对象(而不是修改其中的某个属性的值),所以这里采用的是ref?

写回答

1回答

Jokcy

2021-03-23

ref只有`.value`才是响应式的,reactive的话每一层属性都是响应式的,在这里没必要。另外并没有特定的说一定要用ref或者reactive,根据自己的需求选择就可以

0
2
Jokcy
回复
慕莱坞0998854
响应式的意义在于你修改任意一个属性就会触发依赖其属性的effect,在这里schema的属性太多而且并不太需要根据schema的变化而做什么。
2021-03-24
共2条回复

Vue3.0+TS打造企业级组件库 前端中高级开发者必修课

深度匹配高级前端工程师用人需求 打造属于你自己的开源项目

1310 学习 · 250 问题

查看课程