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);
相关推荐
java1234_小锋6 分钟前
【技术专题】HTML5 网页技术 - HTML5简介 & HTML5 文档结构
前端·html·html5
鶴哥只手遮天28 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 1 章 项目全景:monorepo 架构与工程化体系
前端·vue.js·开源
流星。。方34 分钟前
小团队官网SEO落地:前端语义化与静态生成的工程实践
前端·状态模式
用户5304297657942 分钟前
盘点危化品搬运诊断的6类工具与自处理边界判断
前端
curtain1 小时前
从古法编程到 Agent:我入行这两年,AI 改变了什么
前端·openai
zyfts1 小时前
10分钟自制Codex钉钉通知Skill:AI干完活自动钉钉提醒你
前端
大孜然1 小时前
孜然QQ频道自动化程序机器人配置教程
前端
用户469384921551 小时前
AIUI 焦点高亮切换失效排查与规避:为什么按钮不变换形态呢?
前端
派大鑫wink1 小时前
纯前端实现软考中级·软件设计师备考学习网站
前端·学习
kyriewen1 小时前
我扒了 npm 三年数据:AI 没把依赖变胖,是把包变多了
前端·人工智能·程序员