更改person.age的值时,
通过ref(person.age)得到的age1不会改变,因为ref是复制,拷贝了一份新的数据值单独操作, 更新时相互不影响
通过toRef(person,‘age’)得到的age2会改变,因为 toRef是引用。它为源响应式对象上的某个属性创建一个 ref对象, 二者内部操作的是同一个数据值, 更新时二者是同步的
setup() {
let person =reactive( { name: "long",age:23 });
let age1 = ref(person.age);
let age2=toRef(person,'age')
const change1 = () => {
person.age++
};
return {
age1,
age2,
change1,
};
},
应用: 当要将 某个prop 的 ref 传递给复合函数时,toRef 很有用
useFeatureX函数需要使用props中的foo属性,且foo要为ref。
setup (props, context) {
const length = useFeatureX(toRef(props, 'foo'))
return {
length
}
}