vue中reactive()和ref()的用法

在 Vue 3 的 Composition API 里,reactive()ref() 都是用來把「普通數據」變成「響應式數據」的函數。
一句話區別:

  • reactive() 只能包裹對象/數組
  • ref() 可以包裹任何類型,但在 模板 里讀取時,不需要 .value

下面按「概念 → API → 使用 → 常見注意點」展開。


1. 為什么需要它們

Vue 2 里只有 data() { return {...} } 這一種聲明響應式數據的方式。
Vue 3 的 Composition API 把「聲明響應式」拆成了兩個底層函數:

函數適合場景返回值
reactive()對象、數組Proxy
ref()基本類型、對象、數組RefImpl 對象

2. reactive() 用法

import { reactive } from 'vue'const state = reactive({count: 0,list: [1, 2, 3]
})// 使用
state.count++         // ? 觸發視圖更新
state.list.push(4)    // ? 觸發視圖更新
  • 模板里直接寫:
<template><p>{{ state.count }}</p><button @click="state.count++">+</button>
</template>

?? 注意

  • 不能對 state 重新賦值(會失去響應式)
state = { count: 10 } // ? 錯誤
  • 解構會丟失響應式
const { count } = state // ? count 不是響應式
// 正確:用 toRefs(state) 解構

3. ref() 用法

import { ref } from 'vue'const count = ref(0)
const name  = ref('Vue')
const obj   = ref({ a: 1 }) // 也可以包對象
  • 腳本里取值 / 賦值 必須加 .value
count.value++            // ?
obj.value.a = 2          // ?
  • 模板里會自動解包,不寫 .value
<template><p>{{ count }}</p>   <!-- 模板里直接寫 count --><button @click="count++">+</button>
</template>

?? 注意

  • 重新賦值不會破壞響應式
count.value = 100   // ? 仍是響應式
  • 對對象/數組用 ref() 時,深層屬性依舊是響應式,因為內部會遞歸 reactive()

4. 什么時候用哪個?

場景推薦
需要一組關聯屬性(表單、狀態對象)reactive()
只有一個基本類型(數字、布爾、字符串)ref()
需要解構重新賦值(替換整個對象)ref()
需要深層響應式結構固定reactive()

5. 組合使用示例

<script setup>
import { reactive, ref } from 'vue'// 一整個對象
const user = reactive({name: 'Tom',age: 18
})// 單個值
const loading = ref(false)// 方法
function addAge() {user.age++loading.value = true
}
</script><template><div v-if="!loading">{{ user.name }} - {{ user.age }}<button @click="addAge">長大一歲</button></div><p v-else>加載中...</p>
</template>

6. 速記口訣

  • 對象用 reactive,基本類型用 ref
  • 模板里 ref.value,腳本里千萬別省。
  • 解構對象用 toRefs(),重新賦值用 ref()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92309.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92309.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92309.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【公考基礎】----備考規劃篇

公考 公考&#xff1a;國家公務員考試 即&#xff1a;國考和省考 或 參公考試 包括但不限于&#xff1a;國考、省考、事業單位招考、教師招聘考試、軍隊文職招考等&#xff0c;一切進入國家黨政軍事業單位的考試。 考公整體流程 備考前&#xff1a;準備備考資料&#xf…

STM32江科大學習筆記,全功能按鍵非阻塞式實現,按鍵點擊,雙擊,長按

目錄 一、前言 二、關于實現非阻塞的辦法 2.1 中斷類型的選擇 2.2 定時器中斷 二、程序流程圖 2.1 狀態S0空閑狀態 2.2 狀態S1按鍵判斷長按還是其他的事件 2.3 狀態S2按鍵判斷雙擊或者單擊 2.4 狀態S3按鍵已雙擊狀態 2.5 狀態S4長按狀態 三、編寫代碼 3.1 按鍵初始…

動態代理常用的兩種方式?

口語化回答好的&#xff0c;面試官&#xff0c;動態常見的兩種&#xff0c;一種是 jdk 動態代理&#xff0c;一種是 cglib 動態代理&#xff0c;兩者的最主要區別是 jdk 動態代理主要是依賴于接口創建代理對象&#xff0c;cglib 是通過生成子類的方式&#xff0c;不需要接口&am…

StarRocks vs ClickHouse:2025 年 OLAP 引擎終極對比指南

StarRocks 與 ClickHouse&#xff1a;高性能 OLAP 引擎的兩種選擇在當今數據驅動的商業環境中&#xff0c;選擇合適的分析型數據庫對于企業數據戰略至關重要。StarRocks 和 ClickHouse 作為兩款領先的 OLAP&#xff08;在線分析處理&#xff09;引擎&#xff0c;各自擁有獨特的…

RuoYi-Cloud 微服務本地部署詳細流程實錄(IDEA + 本地 Windows 環境)

本文以 RuoYi-Cloud 3.x 版本為例&#xff0c;開發工具用的是 IntelliJ IDEA&#xff0c;數據庫為 MySQL 8.x&#xff0c;注冊中心選用本地 Nacos 2.2.3&#xff0c;Redis 為 3.x/5.x 均可。親測全流程可用&#xff0c;細節與官方文檔略有不同&#xff0c;避免新手踩坑。 目錄 …

2025年了,程序員轉行還這么難?別愁!大模型這趟“順風車”,你搭不搭?

在“大齡程序員的未來在何方”這篇文章里比較樂觀地介紹了程序員保持競爭力的幾個方向&#xff0c;但現實依然是殘酷的&#xff1a;很多人將不得不離開軟件開發工作&#xff0c;轉型去從事其他職業。 當你要這么做時&#xff0c;就會感慨&#xff1a;想不到一切竟如此艱難&…

CEH、OSCP、CISP、CISSP 四大網絡安全認證攻略

以下是 CEH、OSCP、CISP、CISSP 四大網絡安全認證的詳細對比&#xff0c;涵蓋認證定位、考試難度、適用場景及職業方向&#xff0c;幫助你快速選擇適合自己的證書&#xff1a;1. 核心區別速覽認證發證機構定位 考試形式適合人群國際認可度CEHEC-Council道德黑客滲透測試基礎選擇…

SnapDevelop支持uni-app開發:跨平臺與原生體驗的完美融合

隨著移動互聯網的迅速發展&#xff0c;開發者面臨著多平臺需求和技術挑戰。傳統開發模式要求為每個平臺編寫獨立代碼&#xff0c;不僅浪費時間&#xff0c;還增加了維護難度。作為一款強大的低代碼開發工具&#xff0c;SnapDevelop打破了這一局限&#xff0c;通過對uni-app的支…

海康威視相機,MVS連接成功,但無圖像怎么辦?

問題&#xff1a;準備一個常見的海康 相機去海康機器視覺官網下載MVS軟件。打開軟件&#xff0c;連接相機。顯示連接成功&#xff0c;并能看到相機的信息。點擊開始采集發現沒有圖像解決&#xff1a;右側找到觸發。1. 觸發模式 ON2.選擇 軟觸發3 啟用自動觸發點擊采集有圖像但一…

Linux systemd 系統管理:systemctl 控制服務與守護進程

Linux systemd 系統管理&#xff1a;systemctl 控制服務與守護進程系統啟動過程 Linux 系統的啟動過程遵循以下步驟&#xff1a; 開機自檢&#xff1a;計算機啟動后&#xff0c;BIOS/UEFI 進行硬件自檢&#xff0c;確認硬件設備正常MBR 引導&#xff1a;從指定的啟動設備讀取主…

《Day2-PyTorch Tensor 從入門到實踐:核心操作與避坑指南》

一、Tensor的創建 在Torch中張量以 "類" 的形式封裝起來&#xff0c;對張量的一些運算、處理的方法被封裝在類中&#xff0c;官方文檔&#xff1a; torch — PyTorch 2.7 documentation 1. 基本創建方式 以下講的創建tensor的函數中有兩個有默認值的參數dtype和d…

兩種格式數據介紹——bin 、 yuv文件

一、場景存儲 通常指的是用于存儲攝像頭或傳感器原始采集數據的文件格式&#xff0c;尤其是在自動駕駛、機器人、安防、工業視覺等需要記錄真實世界場景的應用中。格式存儲內容用途場景特點.binLiDAR點云、毫米波雷達數據、IMU、GPS、原始傳感器幀自動駕駛仿真、SLAM建圖、數據…

【網絡運維】Linux:SELinux簡介和配置

SELinux 介紹 SELinux 概述 文件權限控制了哪些用戶或用戶組可以訪問哪些特定文件&#xff0c;但未限定用戶訪問文件的方式。 例如&#xff1a;對于文件的寫入權限而言&#xff0c; 結構化數據文件是否應當設計為只能使用特定的程序寫入&#xff0c;但其他編輯器仍可以打開和修…

GaussDB SQL執行計劃詳解

1 問題現象SQL執行計劃是GaussDB性能分析及調優的核心&#xff0c;它輸出三個關鍵信息&#xff1a;訪問路徑:掃描表數據的路徑。連接順序&#xff1a;多表連接順序。連接方式&#xff1a;多表連接方式。2 技術背景GaussDB SQL語句執行計劃是數據庫為運行SQL語句而執行的操作步驟…

02.【數據結構-C語言】順序表(線性表概念、順序表實現:增刪查、前向聲明、順序表實現通訊錄項目:增刪改查、通訊錄數據導入及保存到本地文件)

目錄 1. 線性表 2. 順序表概念及分類 2.1 順序表的概念 2.2 順序表分類 2.3 動靜態順序表對比 3. 順序表的實現&#xff08;附完整版代碼&#xff09; 3.1 順序表結構體聲明 3.2 初始化&銷毀 3.3 插入&#xff08;尾插、頭插、指定位置之前插入&#xff09; 3.4 …

MyBatis核心配置深度解析:從XML到映射的完整技術指南

&#x1f527; MyBatis核心配置深度解析&#xff1a;從XML到映射的完整技術指南 &#x1f680; 引言&#xff1a;MyBatis作為Java生態中最受歡迎的持久層框架之一&#xff0c;其強大的配置體系是實現靈活數據訪問的核心。本文將深入解析MyBatis的配置文件架構、映射機制以及高級…

OpenCV HSV與RGB顏色模型的區別

HSV與RGB顏色模型的區別 HSV&#xff08;Hue, Saturation, Value&#xff09;和 RGB&#xff08;Red, Green, Blue&#xff09;是兩種不同的顏色表示方式&#xff0c;主要區別如下&#xff1a;對比項RGBHSV定義基于紅、綠、藍三原色的混合基于色相&#xff08;H&#xff09;、飽…

具有柔性關節的機械臂matlab仿真

柔性關節機械臂MATLAB仿真方案&#xff0c;包含動力學建模、控制器設計和可視化分析。該方案基于拉格朗日方程建立柔性關節模型&#xff0c;并實現了PD控制、滑模控制和自適應控制三種控制策略。 MATLAB仿真 %% 柔性關節機械臂仿真 - 完整系統 % 作者: MATLAB技術助手 % 日期: …

數據結構—隊列和棧

1.二級指針的使用二級指針&#xff1a; 1. 在被調函數中&#xff0c;想要修改主調函數中的指針變量&#xff0c;需要傳遞該指針變量的地址&#xff0c;形參用二級指針接收。 2.指針數組的數組名是一個二級指針&#xff0c;指針數組的數組名作為參數傳遞時&#xff0c;可用二級指…

均線:從市場脈搏到量子計算的時空密碼

一部跨越百年的技術分析進化史,揭示金融市場的數學本質 引言:金融市場的永恒羅盤 在華爾街百年風云中,一個簡單的數學工具始終閃耀著智慧光芒——移動平均線(Moving Average)。從杰西利弗莫爾的手繪圖表到文藝復興科技的量子模型,均線系統完成了從經驗工具到科學框架的驚…