当前位置: 首页 > news >正文

Vue3【十】07使用ref创建基本类型的响应式数据以及ref和reactive区别

Vue3【十】07使用ref创建基本类型的响应式数据以及ref和reactive区别

ref 也可以创建对象类型的响应式数据,不过要使用.value
ref 处理对象数据的时候,底层数据还是reactive格式的
reactive 重新分配一个新对象,会失去响应式可以使用Object.assign()来做整体替换,不会丢失响应式
若要使用一个基本类型的响应式数据,必须使用ref
若要使用一个响应式对象成绩不深,ref和reactive都可以
若要使用一个响应式对象,层级比较深,推荐reactive

案例截图

在这里插入图片描述

目录结构

在这里插入图片描述

案例代码

Person.vue

<template><div class="person"><h1>我是 兜率宫 组件</h1><h2>名字:{{ palace.name }}</h2><h2>数量:{{ palace.no }} </h2><button @click="changeName">修改名字</button><button @click="changeNo">修改数量</button><button @click="showAdd">查看信息</button><button @click="changePalace">修改宫殿</button></div><div class="baxian"><h2>八仙都有哪些?</h2><ul><li v-for="item in baxian" :key="item.id">{{ item.name }}</li></ul><button @click="changeFirstName"> 更改第一个名字 </button></div>
</template><script lang="ts" setup>
import { ref } from 'vue'// 数据// ref 也可以创建对象类型的响应式数据,不过要使用.value
// ref 处理对象数据的时候,底层数据还是reactive格式的
let palace = ref({name: '兜率宫',add: '兜率宫。兜率宫位于江西省鹰潭市的龙虎山,是道教的重要圣地之一。它被认为是太上老君的道场,位于离恨天之上,是道教神话中兜率天宫的一部分。兜率宫原址位于龙虎山天门山,有着悠久的历史和文化背景。',no: 1
})let baxian = ref([{ id: 'b01', name: '铁拐李' },{ id: 'b02', name: '汉钟离' },{ id: 'b03', name: '张果老' },{ id: 'b04', name: '吕洞宾' },{ id: 'b05', name: '何仙姑' },{ id: 'b06', name: '蓝采和' },{ id: 'b07', name: '韩湘子' },{ id: 'b08', name: '曹国舅' },
])console.log(palace)
console.log(baxian)// reactive 重新分配一个新对象,会失去响应式可以使用Object.assign()来做整体替换,不会丢失响应式
function changePalace() {Object.assign(palace.value, {name: '天师殿',add: '天师殿,是道教的重要圣地之一。',no: 20})
}// 方法
function changeFirstName() {baxian.value[0].name = '孙悟空'
}
function showAdd() {alert(palace.value.add)
}
function changeName() {palace.value.name = palace.value.name == "兜率宫" ? '永乐宫' : '兜率宫'console.log(palace)
}
function changeNo() {palace.value.no += 1console.log(palace.value.no)
}
// 若要使用一个基本类型的响应式数据,必须使用ref
// 若要使用一个响应式对象成绩不深,ref和reactive都可以
// 若要使用一个响应式对象,层级比较深,推荐reactive
</script><style scoped>
.person {background-color: #ff9e4f;box-shadow: 0 0 10px;border-radius: 30px;padding: 30px;
}button {margin: 0 10px;padding: 0 5px;box-shadow: 0 0 5px;;
}
</style>

相关文章:

  • FM1202,FM020和利时备品
  • Docker的资源限制
  • 6.18云服务器大促盘点,错过一次,再等一年!
  • “GPT-4o深度解析:技术演进、能力评估与个人体验综述“
  • 【C语言题解】1、写一个宏来计算结构体中某成员相对于首地址的偏移量;2、写一个宏来交换一个整数二进制的奇偶位
  • 基于深度学习的CT影像肺癌检测识别
  • JSON及Python操作JSON相关
  • YOLOv5车流量监测系统研究
  • c语言如何改变文件读取位置
  • [线程与网络] 网络编程与通信原理(六):深入理解应用层http与https协议(网络编程与通信原理完结)
  • Python 快速查找并替换Excel中的数据
  • 基于STM32开发的智能家居监控系统
  • C++面向对象程序设计 - 文件操作与文件流
  • Python 树状数组
  • Elasticsearch 认证模拟题 - 8
  • 分享的文章《人生如棋》
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular2开发踩坑系列-生产环境编译
  • CentOS7简单部署NFS
  • fetch 从初识到应用
  • Java 多线程编程之:notify 和 wait 用法
  • Java 网络编程(2):UDP 的使用
  • JavaScript的使用你知道几种?(上)
  • scala基础语法(二)
  • SpringCloud集成分布式事务LCN (一)
  • 包装类对象
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 分布式熔断降级平台aegis
  • 浮动相关
  • 判断客户端类型,Android,iOS,PC
  • Java数据解析之JSON
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 积累各种好的链接
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 移动端高清、多屏适配方案
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • (C语言)二分查找 超详细
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (六)Hibernate的二级缓存
  • (算法二)滑动窗口
  • (新)网络工程师考点串讲与真题详解
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • /etc/sudoer文件配置简析
  • /var/lib/dpkg/lock 锁定问题
  • @angular/cli项目构建--http(2)
  • @NotNull、@NotEmpty 和 @NotBlank 区别
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [04]Web前端进阶—JS伪数组
  • [22]. 括号生成
  • [51nod1610]路径计数