toRefs
- 作用:将一个
响应式对象
,转换为普通对象
,并且将其中的属性转换为 Ref
对象
setup() {
let state = reactive({
name: 'zly',
age: 47
})
let state2 = toRefs(state)
console.log(state)
console.log(state2)
return {...state2}
}
- 如图:

- 场景:如果不使用
toRefs
那么
<template>
name: {{name}} <!-- 页面不会更新 -->
age: {{age}}
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs} from 'vue';
export default defineComponent({
name: 'Child',
setup() {
let state = reactive({
name: 'zly',
age: 47
})
setInterval(()=>{
state.name += '--'
}, 1000)
return {...state}
}
});
</script>
- 如果使用
toRefs
将内部属性都用 Ref
包装
<template>
name: {{name}} <!-- 页面更新 -->
age: {{age}}
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs} from 'vue';
export default defineComponent({
name: 'Child',
setup() {
let state = reactive({
name: 'zly',
age: 47
})
let state2 = toRefs(state)
setInterval(()=>{
state2.name.value += '--'
}, 1000)
return {...state2}
}
});
</script>
- 如图:
