Reactive
下面是reactive的基本用法
1 | let form = reactive({ |
reactive不能直接赋值,会导致破坏响应式对象,因为reactive是proxy代理对象
数组可以使用push + 解构来赋值
1 | let list = reactive<string[]>([]) |
或者可以像这样也可以赋值
1 | let list = reactive<{arr: string[]}>({arr: []}) |
当然还有这种
1 | let list = reactive<{arr: string[]}>({arr: []}) |
那么它跟ref的区别是什么呢
- ref支持所有类型,而reactive只支持引用类型如:Array,Object,Map,Set
- ref取值赋值需要.value,而reactive不需要
readonly
只读的意思,这样对象就只读了
1 | import {readonly} from 'vue' |
shallowReactive
浅层次的Reactive,当然也和ref和shallowRef一样,只要页面上有reactive被更改,页面也会重新渲染,导致shallowReactive深层次的更改在页面上更新
1 | import {shallowReactive} from 'vue' |
Reactive源码解析
还没想好怎么写
reactive中如果传入基本类型会被抛出,并返回错误信息
1 | if(!isObject(target)) { |