Vue?中ref()和?reactive()響應(yīng)式數(shù)據(jù)的使用方法
一、ref( )
在 Vue 3 中,ref()
是一個(gè)用于創(chuàng)建響應(yīng)式引用的函數(shù)。它是 Vue 3 Composition API(組合式API) 的一部分,允許在組件中創(chuàng)建響應(yīng)式數(shù)據(jù)。
使用對(duì)象:基本數(shù)據(jù)類型(String 、Number 、Boolean 、Null 等)、對(duì)象類型
****需要使用 . value
1.引入ref () 函數(shù)
// 引入 import { ref } from 'vue';
2. 創(chuàng)建響應(yīng)式引用
// 定義 響應(yīng)式數(shù)據(jù) 在 <script> 標(biāo)簽中 // 在 <script> 標(biāo)簽中寫的 JS 代碼 , 都需要寫 .value 來(lái)獲取值 const name = ref('張三'); const age = ref(20); const tel = '123xxxxxxxxxx'; const count = ref(0); // 創(chuàng)建一個(gè)響應(yīng)式的數(shù)字 const message = ref('Hello, Vue 3!'); // 創(chuàng)建一個(gè)響應(yīng)式的字符串
3. 訪問和修改引用的值
// 訪問和修改引用的值 // 使用 ref() 創(chuàng)建的響應(yīng)式引用會(huì)返回一個(gè)對(duì)象 // 該對(duì)象有一個(gè) .value 屬性來(lái)訪問和修改其值 console.log(count.value); // 0 count.value++; // 修改值 console.log(count.value); // 1
4. 在模板中的使用
<template> // 在模板中,不需要使用 .value 。當(dāng)在模板中使用時(shí),ref 會(huì)自動(dòng)解包 <div class="person"> <h2>姓名:{ { name }}</h2> <h2>年齡:{ { age }}</h2> <h2>地址:{ { tel }}</h2> <button @click="changeName">修改名字</button> <button @click="changeAge">修改年齡</button> <button @click="showTel">查看電話</button> <p>{ { count }}</p> <!-- 直接使用 count --> <button @click="count++">Increment</button> </div> </template>
5. 與對(duì)象的結(jié)合使用
const user = ref({ name: 'Alice', age: 25, }); // 訪問和修改對(duì)象屬性 console.log(user.value.name); // Alice user.value.age++; // 修改屬性 console.log(user.value.age); // 26
當(dāng)我們?cè)谀0逯惺褂昧?ref 時(shí),在改變了 這個(gè) ref 的值時(shí),Vue 會(huì)自動(dòng)檢測(cè)到這個(gè)變化,并且相應(yīng)地更新 DOM。
ref ( ) 是基于 reactive( ) 編寫的。
二、reactive( )
在 Vue 3 中,reactive()
是一個(gè)用于創(chuàng)建響應(yīng)式對(duì)象的函數(shù)。它是 Vue 3 組合式 API 的一部分,允許開發(fā)者將普通對(duì)象轉(zhuǎn)換為響應(yīng)式對(duì)象,從而在數(shù)據(jù)變化時(shí)自動(dòng)更新視圖。
使用對(duì)象:對(duì)象類型
****不需要使用 . value
1.導(dǎo)入 reactive ( ) 函數(shù)
// 從 Vue 中導(dǎo)入 import { reactive } from 'vue';
2.創(chuàng)建響應(yīng)式對(duì)象
// 創(chuàng)建響應(yīng)式對(duì)象 const state = reactive({ count: 0, message: 'Hello, Vue 3!', });
3. 訪問和修改響應(yīng)式屬性
// 訪問和修改響應(yīng)式屬性 // 可以像訪問普通對(duì)象一樣訪問和修改響應(yīng)式對(duì)象的屬性。 // Vue 會(huì)自動(dòng)追蹤這些屬性的變化,并在它們變化時(shí)更新視圖。 console.log(state.count); // 0 state.count++; // 修改屬性 console.log(state.count); // 1
4. 支持嵌套對(duì)象的響應(yīng)性:
const state = reactive({ user: { name: 'Alice', age: 25, }, }); // 訪問嵌套屬性 console.log(state.user.name); // Alice // 修改嵌套屬性 state.user.age++; console.log(state.user.age); // 26
三、ref( ) 與 reactive( ) 的區(qū)別:
ref()
返回一個(gè)包含.value
屬性的對(duì)象,而reactive()
返回的是一個(gè)直接可用的響應(yīng)式對(duì)象。- reactive 重新分配一個(gè)新對(duì)象,會(huì)失去響應(yīng)式。(可以使用Object.assign 來(lái)整體替換)。
- 使用原則:
- 若需要一個(gè)基本類型的響應(yīng)式數(shù)據(jù),必須使用 ref ;
- 若需要一個(gè)響應(yīng)式對(duì)象,層級(jí)不深,ref ,reactive 都可以使用;
- 若需要一個(gè)響應(yīng)式對(duì)象,且層級(jí)較深,推薦使用 reactive。
到此這篇關(guān)于Vue 中ref( ) 和 reactive( ) 響應(yīng)式數(shù)據(jù)的使用方法的文章就介紹到這了,更多相關(guān)Vue ref( ) 和 reactive( ) 響應(yīng)式數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vuejs如何通過(guò)Axios請(qǐng)求數(shù)據(jù)
這篇文章主要介紹了Vuejs如何通過(guò)Axios請(qǐng)求數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue?Input輸入框自動(dòng)獲得焦點(diǎn)的有效方法
我們有時(shí)候會(huì)遇到要輸入框自動(dòng)獲取焦點(diǎn)的情況,下面這篇文章主要給大家介紹了關(guān)于Vue?Input輸入框自動(dòng)獲得焦點(diǎn)的簡(jiǎn)單方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Vue3 Element Plus表單自定義校驗(yàn)的實(shí)現(xiàn)全過(guò)程
這篇文章主要介紹了Vue3 Element Plus表單自定義校驗(yàn)的實(shí)現(xiàn)全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04基于 Vue.js 之 iView UI 框架非工程化實(shí)踐記錄(推薦)
為了快速體驗(yàn) MVVM 模式,我選擇了非工程化方式來(lái)起步,并選擇使用 Vue.js,以及基于它構(gòu)建的 iView UI 框架。本文給大家分享基于 Vue.js 之 iView UI 框架非工程化實(shí)踐記錄,需要的朋友參考下吧2017-11-11vue項(xiàng)目,代碼提交至碼云,iconfont的用法說(shuō)明
這篇文章主要介紹了vue項(xiàng)目,代碼提交至碼云,iconfont的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別
這篇文章主要介紹了詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue如何實(shí)現(xiàn)多組關(guān)鍵詞對(duì)應(yīng)高亮顯示
這篇文章主要介紹了vue如何實(shí)現(xiàn)多組關(guān)鍵詞對(duì)應(yīng)高亮顯示問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue自定義render統(tǒng)一項(xiàng)目組彈框功能
這篇文章主要介紹了Vue自定義render統(tǒng)一項(xiàng)目組彈框功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06