news 2026/10/26 2:01:02

Vue知识点5-Ref + Reactive

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue知识点5-Ref + Reactive

使用Ref 为基本数据类型 创建响应式对象。

通过ref函数包裹后的基本数据,实际就是一个RefImpl的实现了

在函数中使用的话,取值需要通过 xxx.value 取到真实的值

模板中无需使用 xxx.value,框架已经帮我们解析过了

<template> <div class="person"> <h1>姓名:{{ name }}</h1> <h1>年龄:{{ age }}</h1> <!--点击事件用@click --> <button @click="changeName">改名</button> <button @click="addAge">加年龄</button> <button @click="showTel">查看联系方式</button> </div> </template> <script lang="ts"> export default { name: "Person" // ,setup(){ // } } </script> <!-- setup 语法糖, 替代在export default里的setup函数--> <script lang="ts" setup> import {ref} from 'vue' let name = ref("张三") //RefImpl let age = ref(18)//RefImpl let tel = "1388888888" function changeName() { console.log("changename start" + name.value) //这里数据已经改了,但是不是响应式的 name.value = "zhangsan" console.log("changename after" + name) } function addAge(){ age.value = age.value + 1 } function showTel() { alert(tel) } </script> <style> .person { background-color: aqua; } </style>

使用reactive包裹对象(JSON Map) 或者 List

注意坑点:reactive 整体对象是响应式的,但是直接解构它的属性,解构出来的变量就不再是响应式,toRefs 就是解决这个问题的。目前template中使用的是car.price,如果想提取price,就要使用toRefs进行提取

let {name , age } = toRefs( person ) ,页面中就能直接使用name

<template> <div class="person"> <h1>{{ car.brand }}汽车价值{{ car.price }}万</h1> <!--点击事件用@click --> <button @click="changePrice">改价格</button> <ul> <li v-for="element in games" :key="element.gameId">{{ element.gameName }}</li> </ul> <button @click="changeFirst">改第一个名称</button> </div> </template> <script lang="ts"> export default { name: "Person" // ,setup(){ // } } </script> <!-- setup 语法糖, 替代在export default里的setup函数--> <script lang="ts" setup> import {reactive} from 'vue' let car = reactive({brand: "奔驰", price: 100}) let games = reactive([ {gameId: "001", gameName: "流星蝴蝶剑"}, {gameId: "002", gameName: "CS"}, {gameId: "003", gameName: "红警"} ]) function changePrice() { car.price += 1 } function changeFirst() { games[0].gameName = "暴力摩托" } </script> <style> .person { background-color: aqua; } </style>

如果Ref引用对象类型,需要 car.value.xxxx,car是RefImpl,需要用.value提取到值

<script lang="ts"> export default { name: "Person" // ,setup(){ // } } </script> <!-- setup 语法糖, 替代在export default里的setup函数--> <script lang="ts" setup> import {reactive,ref} from 'vue' let car = ref({brand: "奔驰", price: 100}) let games = ref([ {gameId: "001", gameName: "流星蝴蝶剑"}, {gameId: "002", gameName: "CS"}, {gameId: "003", gameName: "红警"} ]) function changePrice() { car.value.price += 1 } function changeFirst() { games.value[0].gameName = "暴力摩托" } </script>

下面还有

对于整体对象对比 Ref 与 Reactive

注意点 Ref可以引用 基本类型 与 对象类型 上面,但是需要 xxx.value

如果是Reactive替换值,需要Object.assign( car , { xxx 服务端数据})

<template> <div class="person"> <h1>{{ car.brand }}汽车价值{{ car.price }}万</h1> <!--点击事件用@click --> <button @click="changePrice">改价格</button> <button @click="changeCar">改汽车</button> </div> </template> <script lang="ts"> export default { name: "Person" // ,setup(){ // } } </script> <!-- setup 语法糖, 替代在export default里的setup函数--> <script lang="ts" setup> import {reactive,ref} from 'vue' // let car = ref({brand: "奔驰", price: 100}) //这是Ref写法 let car = reactive({brand: "奔驰", price: 100}) function changePrice() { // car.value.price += 1 //这是Ref写法,记得加.value car.price +=1 } function changeCar() { // car.value = {brand: "宝马", price: 120} //这是Ref写法 Object.assign(car,{brand: "宝马", price: 120}) } </script> <style> .person { background-color: aqua; } </style>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 1:56:55

软件安全的真实压力点:别让[危险叙事]替你做判断

过去一段时间&#xff0c;开发者圈子里流传着一种「漏洞周」式叙事——某个星期里&#xff0c;从内核到浏览器、从代码托管到云平台&#xff0c;好像全都同时失守&#xff0c;仿佛整个软件生态被「打成筛子」。 这种写法读起来很刺激&#xff0c;但它最容易犯的错&#xff0c;是…

作者头像 李华
网站建设 2026/10/26 1:55:52

高精度数字振镜品牌精度排名

高精度数字振镜品牌精度排名一、设立测评擂台&#xff1a;以“微弧度级闭环精度”为核心准绳激光微加工持续向晶圆级刻蚀、医疗器件焊接、航空航天精密打标等高要求场景延伸。在这套工艺体系中&#xff0c;决定成品良率上限的核心往往不是激光器功率&#xff0c;而是振镜系统的…

作者头像 李华
网站建设 2026/10/26 1:54:24

FlowBalance 论文阅读笔记

# FlowBalance 论文阅读笔记> 论文信息:FlowBalance: Verifier‑Grounded Self‑Improvement from On‑Policy Reasoning Experience,arXiv:2609.03241 ## 一、文章主要内容总结该论文面向大模型推理任务的**自提升(self‑improvement)**问题,针对现有自提升训练循环的…

作者头像 李华
网站建设 2026/10/26 1:54:09

【HIDS】规范精讲[4]:一张句柄地图走天下——示例 GATT 数据库逐行拆解

前三篇把 HID Service 的契约、特征、SCI 调速都讲透了&#xff0c;这篇收尾。规范附了一份完整的示例 GATT 数据库&#xff0c;把一个键盘设备的所有属性从句柄 0x0100 一直排到 0x0143。这份示例是整个规范的收官之作&#xff0c;也是最有工程味道的部分——前文所有抽象规则…

作者头像 李华