ref與reactive

在Vue 3中,refreactive 是兩種用于創建響應式狀態的API。它們在實現方式和使用場景上有所不同。下面是對 refreactive 的深度解析:

1. ref 解析

ref 用于創建一個單一的響應式引用,可以用來包裹基本類型(如字符串、數字、布爾值)或對象。

使用方式:
import { ref } from 'vue';const count = ref(0);console.log(count.value); // 0count.value++;
console.log(count.value); // 1
特點:
  • 基本類型和對象ref 可以包裹基本類型和對象,對于基本類型,ref 提供一個 .value 屬性來存儲值。
  • 解包:當 ref 包裹對象時,解包操作可以省去 .value 的使用。例如,在模板中可以直接訪問解包后的值。
  • 響應式:任何引用 ref 的組件或計算屬性都會在 ref 的值發生變化時自動重新渲染。
使用場景:
  • 基本類型:需要響應式管理基本類型數據時使用 ref
  • 單個對象:當僅有單個對象需要響應式管理時,使用 ref 是一個簡單的選擇。

2. reactive 解析

reactive 用于創建一個響應式對象,通常用于包含多個屬性的復雜狀態。

使用方式:
import { reactive } from 'vue';const state = reactive({count: 0,name: 'Vue'
});console.log(state.count); // 0state.count++;
console.log(state.count); // 1
特點:
  • 深度響應式reactive 創建的對象是深度響應式的,即對象中的嵌套對象也是響應式的。
  • 對象代理reactive 使用 Proxy 實現對整個對象的代理,使得對對象屬性的操作都是響應式的。
  • 直接訪問:與 ref 不同,使用 reactive 創建的響應式對象不需要通過 .value 屬性訪問。
使用場景:
  • 復雜狀態:需要響應式管理包含多個屬性的對象時,使用 reactive
  • 嵌套對象:對象中包含嵌套對象,并希望所有層級的屬性都響應式變化時,使用 reactive

refreactive 的區別

特性refreactive
使用場景單一基本類型或對象包含多個屬性的復雜對象
訪問方式.value 屬性(包裹對象可直接訪問)直接訪問對象屬性
響應式深度淺響應式(基本類型)/深響應式(對象)深度響應式
適用數據類型基本類型和對象僅對象

示例對比

ref 示例:
import { ref } from 'vue';const count = ref(0);
const user = ref({ name: 'John', age: 30 });count.value++;
user.value.age++;
reactive 示例:
import { reactive } from 'vue';const state = reactive({count: 0,user: {name: 'John',age: 30}
});state.count++;
state.user.age++;

結合使用 refreactive

在實際項目中,refreactive 常常結合使用,以適應不同的數據管理需求。例如:

import { ref, reactive } from 'vue';const count = ref(0);
const user = reactive({ name: 'John', age: 30 });const incrementCount = () => {count.value++;
};const updateUserAge = () => {user.age++;
};

通過結合使用 refreactive,可以更靈活地管理組件狀態,實現高效的響應式數據綁定。

總結

  • ref:適用于基本類型和單個對象,需要通過 .value 屬性訪問。
  • reactive:適用于復雜對象,提供深度響應式,直接訪問對象屬性。
  • 結合使用:根據實際需求選擇適當的API,靈活管理組件狀態。

理解 refreactive 的區別和應用場景,有助于在Vue 3中更高效地管理響應式狀態,提升開發效率和代碼可維護性。

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

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

相關文章

Word如何在頁眉中插入和刪除橫線

你平常是否遇見到Word的頁眉中有一條橫線,怎么也刪不了!!! 今天劉小生分享如何在頁眉中插入和刪除橫線,我們一起操練起來吧! 1、Word頁眉插入橫線 選擇【插入】-【頁眉頁腳】,在“頁眉頁腳”…

00_Python核心編程

Python入門 一 Python初識 1 Python的歷史 Python的歷史python是蟒蛇的含義python是一種解釋型的,面向對象的,帶有動態語義的高級程序設計語言. python是一種使你在編程時能夠保持自己的風格的程序設計語言,你不用費什么勁就可以實現你想要的功能,并且編寫的程序清晰易懂. …

ArcGIS Pro SDK (五)內容 5 元數據

ArcGIS Pro SDK (五)內容 5 收藏夾 目錄 ArcGIS Pro SDK (五)內容 5 收藏夾1 獲取其 IMetadata 接口2 獲取項目的元數據:獲取XML3 設置項目的元數據:設置XML項4 檢查元數據是否可以編輯:可以編輯…

可靠性評估的概念和流程

可靠性評估的概念和流程 可靠性評估是系統工程中的一項重要任務,它旨在確定系統的可靠性和預期的運行時間,以便進行設計優化和維護決策。其概念和流程通常涉及以下幾個關鍵要素: 可靠性模型: 可靠性模型是描述系統或組件性能的…

常見的排序算法【總結】

目錄 排序的基本概念與分類排序的穩定性內排序與外排序簡單排序冒泡排序時間復雜度: O ( n 2 ) O(n^2) O(n2) 簡單選擇排序排序原理:時間復雜度: O ( n 2 ) O(n^2) O(n2) 插入排序排序原理:時間復雜度: O ( n 2 ) O(n^…

晶方科技:臺積電吃飽,封裝迎春?

半導體產業鏈掀起漲價潮,先進封裝迎接利好。 這里我們來聊國內先進封裝企業——晶方科技。 近期,由于產能供不應求,臺積電決定上調先進封裝產品價格,還表示訂單已經排到2026年。 大哥吃不下了,剩下的訂單全都是空間。…

主線程和子線程

主線程 當Java程序啟動時,一個線程會立刻運行,該線程通常叫做程序的主線程(main thread),即main方法對應的線程,它是程序開始時就執行的。 Java應用程序會有一個main方法,是作為某個類的方法出…

JDK 23:Loom改進版發布

1.新版 Loom EA 改進虛擬線程中的監視器(同步方法) Project Loom 發布了新的搶先體驗版本(23-loom4-102 - 2024/5/31)。改進了對象監視器實現,可以防止虛擬線程在以下情況下固定其載體線程: 當進入同步方法/語句時發生阻塞&…

問題-python-爬蟲無法爬取外網資源問題(python爬蟲)

方法一: 這個報錯通過關掉梯子就能解決,目前不清楚具體原理。 后續了解具體原理了,我會在這篇文章上更新具體分析—— 方法二: 也可以把這個東西打開,但是用完建議關掉。

python無法安裝scipy怎么辦

python安裝scipy時出現以下錯誤&#xff1a; from scipy.misc import imread Traceback (most recent call last):File "D:/Pyproject/qq_Spider/create_cloud.py", line 14, in <module>from scipy.misc import imread ModuleNotFoundError: No module named …

淺析Kubernetes的權限控制模型

Kubernetes是一個開源的容器編排引擎&#xff0c;用來對容器化應用進行自動化部署、擴縮和管理。它是一個強大的集群管理系統&#xff0c;提供了豐富的功能。他的一個核心組件是Kubernetes API Server&#xff0c;這是集群中所有資源管理的入口點&#xff0c;提供了一組RESTful…

spring boot jar 啟動報錯 Zip64 archives are not supported

spring boot jar 啟動報錯 Zip64 archives are not supported 原因、解決方案問題為什么 spring boot 不支持 zip64zip、zip64 功能上的區別zip 的文件格式spring-boot-loader 是如何判斷是否是 zip64 的&#xff1f; 參考 spring boot 版本是 2.1.8.RELEASE&#xff0c;引入以…

北京崇文門中醫醫院賈英才主任:腦梗治療新探索

腦梗&#xff0c;是眾多患者心中的陰霾&#xff0c;它的突然來襲&#xff0c;常常讓人猝不及防。 一旦發作&#xff0c;偏癱、失語等癥狀接踵而至&#xff0c;給患者及其家庭帶來沉重的打擊&#xff0c;極大地影響了生活的質量。 造成腦梗頻發的原因究竟是什么&#xff1f;中…

Golang | Leetcode Golang題解之第173題二叉搜索樹迭代器

題目&#xff1a; 題解&#xff1a; type BSTIterator struct {stack []*TreeNodecur *TreeNode }func Constructor(root *TreeNode) BSTIterator {return BSTIterator{cur: root} }func (it *BSTIterator) Next() int {for node : it.cur; node ! nil; node node.Left {it…

Docker部署前端,動態配置后端地址

本文介紹了使用Docker環境變量動態配置nginx。采用的是通過docker run -e xxxxxxx先往容器注入環境變量&#xff0c;然后進一步通過envsubst指令將環境變量寫入到conf文件中&#xff0c;實現動態配置文件內容。 背景 前后端分離的架構下&#xff0c;經常會用到nginx反向代理來…

粉末冶金5G智能工廠工業物聯數字孿生平臺,推進制造業數字化轉型

粉末冶金5G智能工廠工業物聯數字孿生平臺&#xff0c;推進制造業數字化轉型。在數字化浪潮席卷全球的今天&#xff0c;制造業的數字化轉型已然成為不可逆轉的趨勢。粉末冶金行業&#xff0c;作為制造業的重要一環&#xff0c;亦需緊跟時代步伐&#xff0c;以5G智能工廠、工業物…

【SpringSecurity】認證與鑒權框架SpringSecurity——授權

目錄 權限系統的必要性常見的權限管理框架SpringSecurity授權基本流程準備腳本限制訪問資源所需權限菜單實體類和Mapper封裝權限信息封裝認證/鑒權失敗處理認證失敗封裝鑒權失敗封裝配置SpringSecurity 過濾器跨域處理接口添加鑒權hasAuthority/hasAnyAuthorityhasRole/? hasA…

華為HCIP Datacom H12-821 卷10

1.多選題 以下哪些動態路由協議可以應用在 IPv6 網絡? A、Is- Is B、BGP6 C、IS-ISv6 D、OSPFv3 正確答案: A,D 解析: 幾乎每個動態路由協議都支持IPv6,但是每個協議支持IPv6的時候的叫法不相同。支持IPv6的RIP協議,叫做RIPng;支持IPv6的OSPF協議,叫做OSPFv3;支持…

針對知識圖譜使用 Mistral-7b 從簡歷中提取實體

翻譯&#xff1a;“Entity Extraction from Resume using Mistral-7b for Knowledge Graphs” | by Tejpal Kumawat | Feb, 2024 | Medium[1] 在快速發展的自然語言處理&#xff08;NLP&#xff09;領域&#xff0c;從非結構化文本源中準確提取和分析信息的能力變得越來越重要。…

Python教程:認識一下print函數

print() 是 Python 中一個非常基礎但功能強大的函數&#xff0c;用于將數據輸出到標準輸出&#xff08;通常是控制臺&#xff09;或文件。本文我們一起聊一下這個“平凡”的print函數。 原理 print() 函數的原理相對簡單&#xff0c;它接受一個或多個參數&#xff0c;并將這些…