toRef和toRefs
作用:创建一个ref对象,其value指向另一个对象中得某一个属性
语法:const name = toRef(data,‘name’)
应用:要将响应式对象中得某个属性单独提供给外部使用时
拓展:toRefs与toRef功能一致 但可以批量创建多个ref对象 语法:toref(data)
为了能在template写的简短,引用toRef处理
被toRef包裹的响应式,修改时候直接读取原来响应式reactive代理属性 实时响应变化
不使用toRef则响应式的修改就会出现Bug
// 使用toRef进行对某个重新赋值的属性添加响应式
const skill = toRef(data,‘skill’)
const age = toRef(data,‘age’)
const name = toRef(data,‘name’)
const salary = toRef(data,‘salary’)
console.log(skill,‘哈哈哈’)
return {data,skill,age,salary,name}
toRefs为了完善toRef
1.toRefs可以直接处理多个属性的解构
2.可以简化代码
const allProps = toRefs(data)
// return {data,skill,age,salary,name}
return {data,...allProps} //对上面return进行简化代码
打印allProps结果:
age: ObjectRefImpl {_object: Proxy, _key: 'age', __v_isRef: true}
name: ObjectRefImpl {_object: Proxy, _key: 'name', __v_isRef: true}
position: ObjectRefImpl {_object: Proxy, _key: 'position', __v_isRef: true}
salary: ObjectRefImpl {_object: Proxy, _key: 'salary', __v_isRef: true}
skill: ObjectRefImpl {_object: Proxy, _key: 'skill', __v_isRef: true}
使用完整示例如下:
template
toRef
姓名1:{{data.name}}
姓名2:{{name}}
年龄1:{{data.age}}
年龄2:{{age}}
薪资1:{{data.salary}}
薪资2:{{salary}}
岗位1:{{data.position}}
岗位2:{{data.position}}
掌握技能1:
-
{{item.type}} {{item.level}}
掌握技能2:
-
{{item.type}} {{item.level}}
js