Vue3_响应式数据的处理方式

目录

ref和reactive区别

让一个普通数据转换为响应式数据,有如下两种方式

  1. ref函数,更适合单个变量
    在script标签中操作ref响应式数据要通过.value
    在template中操作ref响应式数据则无需.value
  2. reactive函数 更适合对象
    在script和template标签中操作都是直接使用对象名.属性方式即可

测试

clike 复制代码
实现 + - 按钮,实现数字加1减1

code

clike 复制代码
<script setup>
import {ref,reactive} from 'vue'
let counter = ref(10)

let person = reactive({
  name:"",
  age:101
})


</script>
<template>
<div>
<button @click="counter++">+</button>
<span >{{counter}}</span>
<button @click="counter--">-</button>
<hr>
<button @click="person.age--">-</button>
{{person.age}}
<button @click="person.age++">+</button>


</div>
</template>
<style scoped>
</style>

toRef函数和ToRefs函数

toRef函数:将reactive响应式数据中的某个属性转换为ref响应式数据

toRefs函数:同时将reactive响应式数据中的多个属性转换为ref响应式数据

clike 复制代码
<script setup>
import {ref,reactive,toRef,toRefs} from 'vue'
let counter = ref(10)

let person = reactive({
  name:"",
  age:101
})

let p_age = toRef(person,'age')
let {name,age} = toRefs(person)


</script>
<template>
<div>
  
<button @click="counter++">+</button>
<span >{{counter}}</span>
<button @click="counter--">-</button>
<hr>
<button @click="person.age--">-</button>
{{person.age}}
<button @click="person.age++">+</button>

<hr>
{{p_age}}
<button @click="p_age++">+</button>

<hr>
{{age}}
<button @click="age++">+</button>


</div>
</template>
<style scoped>
</style>
相关推荐
hpoenixf4 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特4 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
泯泷4 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
mengchanmian5 小时前
前端node常用配置
前端
华洛5 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq6 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
A黄俊辉A6 小时前
vue css中 :global的使用
前端·javascript·vue.js
小码哥_常7 小时前
被EdgeToEdge适配折磨疯了,谁懂!
前端
小码哥_常7 小时前
从Groovy到KTS:Android Gradle脚本的华丽转身
前端
灵感__idea7 小时前
Hello 算法:复杂问题的应对策略
前端·javascript·算法