vue3toRefs
Posted web半晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3toRefs相关的知识,希望对你有一定的参考价值。
1、概念
把一个响应式对象转换成普通对象,该普通对象的每个property都是一个ref。
应用:
当从合成函数返回响应式对象时,toRefs非常有用,这样消费组件就可以在不丢失响应式的情况下对返回的对象进行分解使用。
问题:
reactive对象取出的所有属性值都是非响应式。
解决:
利用toRefs可以将一个响应式reactive对象的所有原始属性转换为响应式的ref属性。
2、示例代码
<template>
<h2>toRefs的使用</h2>
<!-- <h3>name:{{ state.name }}</h3>
<h3>age:{{ state.age }}</h3> -->
<h3>name:{{ name }}</h3>
<h3>age:{{ age }}</h3>
<h3>name2:{{ name2 }}</h3>
<h3>age2:{{ age2 }}</h3>
</template>
import { defineComponent, reactive, toRefs } from "vue";
function useFeatureX() {
const state = reactive({
name2: "自来也",
age2: 47,
});
return {
...toRefs(state),
};
}
export default defineComponent({
name: "App",
setup() {
const state = reactive({
name: "自来也",
age: 47,
});
// toRefs可以把一个响应式对象转换成普通对象,该普通对象的每个 property 都是一个 ref
// const state2 = toRefs(state)
const { name, age } = toRefs(state);
// console.log(state2)
// 定时器,更新数据,(如果数据变化了,界面也会随之变化,肯定是响应式的数据)
setInterval(() => {
// state.name += '=='
// state2.name.value+='==='
name.value += "===";
console.log("======");
}, 1000);
const { name2, age2 } = useFeatureX();
return {
// state,
// 下面的方式不行啊
// ...state // 不是响应式的数据了---->{name:'自来也',age:47}
// ...state2 toRefs返回来的对象
name,
age,
name2,
age2,
};
},
});
以上是关于vue3toRefs的主要内容,如果未能解决你的问题,请参考以下文章