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

Vue3 基础语法指南:响应式系统与 Ref 应用

1、Reactive 的深度响应式

1.1、基本用法

vue

<script setup>
import { reactive } from 'vue'

const state = reactive({
  count: 0,
  user: {
    name: 'Alice',
    age: 30
  }
})

const increment = () => state.count++
const updateName = () => state.user.name = 'Bob'
</script>

1.2、Todolist 实战

vue

<script setup>
import { reactive } from 'vue'

const state = reactive({
  todos: [
    { id: 1, text: 'Learn Vue3', done: false }
  ],
  newTodo: ''
})

const addTodo = () => {
  state.todos.push({
    id: Date.now(),
    text: state.newTodo,
    done: false
  })
  state.newTodo = ''
}
</script>
2、Ref 的灵活应用

2.1、基础使用

vue

<script setup>
import { ref } from 'vue'

const count = ref(0)
const user = ref({ name: 'Alice' })

const increment = () => count.value++
const updateName = () => user.value.name = 'Bob'
</script>

2.2、Ref vs Reactive

特性RefReactive
适用类型基本类型 / 对象类型对象类型
响应式本质通过.value 访问响应式数据直接访问响应式数据
深层响应对象类型自动转为 Reactive深度响应
性能优化基本类型更高效对象类型更高效

使用原则

javascript

// 基本类型
const num = ref(0)

// 浅层次对象
const user = ref({ name: 'Alice' })

// 深层次对象
const complex = reactive({
  a: { b: { c: 0 } }
})

2.3、标签与组件引用

DOM 元素引用

vue

<template>
  <h1 ref="title">Hello Vue3</h1>
  <button @click="updateTitle">Update</button>
</template>

<script setup>
import { ref } from 'vue'

const title = ref<HTMLHeadingElement>(null)
const updateTitle = () => {
  title.value.style.color = 'red'
  title.value.textContent = 'Updated!'
}
</script>

组件实例引用

vue

<!-- 父组件 -->
<template>
  <MyComponent ref="child" />
  <button @click="callChildMethod">Call Child</button>
</template>

<script setup>
import MyComponent from './MyComponent.vue'
import { ref } from 'vue'

const child = ref()
const callChildMethod = () => {
  child.value.sayHello()
  console.log(child.value.count)
}
</script>

<!-- 子组件 -->
<script setup>
import { ref, defineExpose } from 'vue'

const count = ref(0)
const sayHello = () => console.log('Hello!')

defineExpose({
  count,
  sayHello
})
</script>
总结对比
功能点Setup 函数ReactiveRef
作用组件逻辑入口深度响应式对象灵活响应式变量
适用场景所有组合式 API 使用复杂对象状态管理基础类型 / 简单对象管理
性能考量优先使用组合式 API对象层级越深越推荐基本类型优先
特殊能力访问 props/context自动依赖收集模板引用

通过合理运用这些特性,可以构建出更高效、更易维护的 Vue3 应用。

相关文章:

  • JavaIO流的使用和修饰器模式(直击心灵版)
  • 1201. 【高精度练习】蜜蜂路线
  • vpc网络的原理
  • 【Android】基础架构(详细介绍)
  • HAL库定时器配置
  • 每日一题力扣3248.矩阵中的蛇c++
  • 第三章:单调队列
  • Java中的JSONObject对象
  • DeepSeek-R1论文深度解析:纯强化学习如何引爆LLM推理革命?
  • LeetCode[454]四数相加Ⅱ
  • 近期学习资料,尚未整理
  • Wpf Avalonia-实现中英文切换工程
  • VAE,以及概率分布的各种知识点
  • 抓包工具:fiddler和wireshark对比
  • Python Django入门(创建其他网页)
  • PreparedStatement 和 Statement 从 功能、性能、安全性、适用场景 等维度详细对比分析
  • 架构师面试(十九):IM 架构
  • 某视频的解密下载
  • 地理信息科学(GIS)专业的就业出路与转型新方向,传统就业领域VS新兴技术赛道
  • docker模拟Dos_SYN Flood拒绝服务攻击 (Ubuntu20.04)
  • 女排奥运冠军宋妮娜:青少年保持身心健康才能走得更远
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 独家 |《苏州河》上海上演,编剧海飞:上海的风能吹透我
  • 多地举办演唱会等吸引游客刺激消费,经济日报:引导粉丝经济理性健康发展
  • 端午小长假前夜火车票今日开抢,多个技巧提高购票成功率