Vue3 中使用 toRefs的方法

首先画出模板

XML 复制代码
<template>
    <div class="person">
        <h2>姓名:{{ person.name }}</h2>
        <h2>年龄:{{ person.age }}</h2>
        <button @click="showTel">查看联系方式</button>
        <button @click="changeName">修改名字</button>
        <button @click="chanegAge">修改年龄</button>
    </div>
    
</template>

定义响应式对象

XML 复制代码
<script lang="ts" setup name="PersonToRefs">
import { ref, reactive,toRefs } from 'vue'

const person = reactive({
    name: "zhangsan",
    age: 18,
    tel :123456789
})

// 现在将数据进行解析出来
// const {name,age} = person //此时的name,age并不是响应式的
const {name,age} = toRefs(person) //此时的name,age是响应式的,但是其值是响应式的,但是其值是结构成ref(响应式)对象的数据


function changeName(){
    person.name = person.name + '~'
    console.log("name",name.value);
    console.log("person.name",person.name);
}

function chanegAge(){
    person.age = person.age + 1
    console.log("age",age.value);
    console.log("person.age",person.age);
}

function showTel(){
    alert(person.tel)
}

</script>

样式:

XML 复制代码
<style scoped>
.person {
    background-color: skyblue;
    box-shadow: 0 0 10px;
    border-radius: 10px;
    padding: 20px
}
</style>

小结:

当我们使用,reactive定义响应式对象的时候,使用let{name,age} = person 解析对象后,

其name,age并不是响应式的,因此我们需要使用,toRefs属性,将其转化为响应式的

并且,使用toRefs转化后的name,age其变成了,与person相关联的Ref响应式数据

当只需要某个对象的单个属性的时候,可以使用toRef

XML 复制代码
const roRefName = toRef(person,'name')

console.log(roRefName.value);
相关推荐
qq_589666054 小时前
TypeScript 完整入门教程
前端·javascript·typescript
星栈独行5 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
落落Plus6 小时前
浏览器缓存机制详解
javascript·缓存·浏览器缓存
用户059540174467 小时前
LLM对话记忆测试踩坑实录:手工回归30分钟,自动化后2分钟发现3个隐藏Bug
前端·css
Ashley的成长之路8 小时前
前端性能优化实战手册·第2篇:资源加载策略全解
前端·性能优化·资源加载·http/3·性能优化实战·资源加载优化
浅水壁虎9 小时前
vue基础(第二章 )
前端·javascript·vue.js
界面开发小八哥9 小时前
界面控件DevExtreme v26.1新版亮点——支持Angular 22
前端·javascript·angular.js·devexpress·ui开发·devextreme
Getflare9 小时前
前端 + UI 设计 + AI:这不是三个工种,是一个新三角能力模型(附自检清单)
前端·人工智能·ui
oil欧哟9 小时前
我做了一个 Vibe Coding 术语学习站:VibeHub
前端·ai·agent·独立开发·vibe coding