{{ msg }}
{{ man }}
针对简单对象
针对复杂对象,但是内部的value被proxy代理了
判断是不是一个ref对象
{{ msg1 }}
{{ msg2 }}
浅层响应式。创建一个跟踪自身 .value 变化的 ref,但不会使其值也变成响应式的
{{ man }}
shallowRef
针对复杂对象,其value
内部直接是值,不是一个proxy
对象,无法做到深层响应
shallowRef
不可以和re
f同时使用,如果同时使用,shallowRef
也会深层响应
ref:{{ refMan }}
shallowRef:{{ man }}
总结:
强制更新页面的DOM
shallowRef:{{ man }}
官网介绍:https://cn.vuejs.org/api/reactivity-advanced.html#customref
创建一个自定义的 ref,显式声明对其依赖追踪和更新触发的控制方式。
customRef:{{ obj }}
使用场景:可以自由控制响应式处理,比如在接口调用时候(官网示例)
import { customRef } from 'vue'
export function useDebouncedRef(value, delay = 200) {
let timeout
return customRef((track, trigger) => {
return {
get() {
track()
return value
},
set(newValue) {
clearTimeout(timeout)
timeout = setTimeout(() => {
value = newValue
trigger()
}, delay)
}
}
})
}
官网:https://cn.vuejs.org/guide/essentials/reactivity-fundamentals.html#reactive
1、reactive 限定了值类型,只能用于对象类型(Object、Array、集合(Map、Set))
persion: {{ person }}
2、不能替换整个对象:reactive是proxy对象,不能直接赋值,否则会破会其响应式
list: {{ list }}
解决方法:使用数组自带方法改变数组
list: {{ list }}
reactive() 的浅层作用形式
详情见文档:https://cn.vuejs.org/api/reactivity-advanced.html#shallowreactive
.value
,reactive 不需要