Vue3中ref和reactive用法与双向数据绑定

一、Ref和Reactive

javascript 复制代码
基本数据类型例如字符串、数值通常用ref来定义
let name = ref('张三')
let age = ref(8)
引用类型常用reactive来定义
let person = reactive({
   name: '张三',
   age: 8
})

二、Ref说明

html 复制代码
 <template>
    <div>
        <span>姓名</span><input type="text" v-model="name">
        <span>年龄</span><input type="number" v-model="age"> 
        <el-button type="primary" size="small" @click="handleAgeAdd">增加年龄</el-button>
    </div>
 <template>
<script setup lang="ts">
import { ref } from 'vue'
  let name = ref('张三')
  let age = ref(8)
  function handleAgeAdd() {
    console.log(name)
    name.value = '李四'
    age.value += 1
  }
</script>

此时控制台中会打印name,可以看到name是一个refImpl对象,并且具有value属性。因此修改通过ref定义的name和age时候不能写成name='李四'而是需要写成name.value='李四'。同理age要写为age.value+=1

三、Reactive说明

html 复制代码
<template>
  <div>
    <span>姓名</span><input type="text" v-model="person.name">
    <span>年龄</span><input type="number" v-model="person.age"> 
    <el-button type="primary" size="small" @click="handleAgeAdd">增加年龄</el-button>
  </div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
  let person = reactive({
    name: '张三',
    age: 8
  })
  function handleAgeAdd() {
    console.log(person)
    person.name = '李四'
    person.age += 1
  }
</script>

此时控制台中会打印person,可以看到person是一个proxy对象。因此修改通过reactive定义的person只需要写成person.name='李四'。同理age要写为person.age+=1。不再需要访问.value来修改数据了。

四、双向数据绑定

Vue3中一大特性就是双向数据绑定,使用v-model即可实现。具体使用方式可以参考上面的的代码片段使用即可。

相关推荐
IT_陈寒12 分钟前
Java里用Stream.parallel()翻车实录,这性能还不如单线程
前端·人工智能·后端
Bs_MoneyMagnet24 分钟前
基于springboot+vue的生态果园采摘预约系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·毕业设计·计算机毕业设计
wangchunyu11424 分钟前
JavaScript 零基础入门教程
前端
hanchenxing1 小时前
前端异步任务三方案:Celery vs Redis Stream vs BullMQ 实战对比消息队列
前端·数据库·redis·异步任务·方案对比
mONESY1 小时前
LangGraph.js 从零上手:把 Agent 工作流从一条线变成一张网
javascript
默_笙1 小时前
⚓ AI 的"官方答题卡":withStructuredOutput 与结构化输出的终局之战
前端·javascript
掘金挖土1 小时前
前端手摸手跑路之 AI 应用开发(五)
前端·后端
小羊没烦恼!2 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
码上成长2 小时前
Mapbox 围栏编辑踩过的几个坑:key 串了、形状炸了、icon 挡住绿点
前端·前端框架
SGAMERrain3 小时前
做了一个免费的在线绘画网格工具 DrawGrid,聊聊一个小工具是怎么越做越完整的
前端