ref()
ref接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value属性,指向该内部值。
const count = ref(0)
console.log(count.value) // 0
unref :
如果参数是一个ref,则返回内部值,否则返回参数本身。
let msgref = ref('你好')
console.log(unref(msgref)) // 你好 //不用msgref.value了
let msg = '你好'
console.log(unref(msg)) // 你好
toRef、toRefs
可以用来为源响应式对象上的 property 新创建一个 ref。然后可以将 ref 传递出去,从而保持对其源 property 的响应式连接。
props: {
params: {
type: Object,
default: () => {
return {};
},
},
}
let { params } = toRefs(props); //props解构(将props变回响应式)
const searchInfo = ref(params)
相当于
// const searchInfo = toRef(props, 'params')
toRef: 复制 reactive 里的单个属性并转成 ref
toRefs: 复制 reactive 里的所有属性并转成 ref
1.ref、toRef、toRefs 都可以将某个对象中的属性变成响应式数据。
2.ref的本质是拷贝,修改响应式数据,不会影响到原始数据,视图会更新。
3.toRef、toRefs的本质是引用,修改响应式数据,会影响到原始数据,视图会更新。
isRef
检查值是否为一个 ref 对象。
let info = reactive({ user: 'John Doe' })
const state = ref({foo: 1,bar: 2})
console.log(isRef(state)) // true
console.log(isRef(info)) // false
toRaw
从Reactive或Ref中得到原始数据,做一些不想被监听的事情(提升性能),数据发生变化,不会更新。