Vue?中ref()和?reactive()響應(yīng)式數(shù)據(jù)的使用方法
一、ref( )
在 Vue 3 中,ref() 是一個用于創(chuàng)建響應(yīng)式引用的函數(shù)。它是 Vue 3 Composition API(組合式API) 的一部分,允許在組件中創(chuàng)建響應(yīng)式數(shù)據(jù)。
使用對象:基本數(shù)據(jù)類型(String 、Number 、Boolean 、Null 等)、對象類型
****需要使用 . 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 來獲取值
const name = ref('張三');
const age = ref(20);
const tel = '123xxxxxxxxxx';
const count = ref(0); // 創(chuàng)建一個響應(yīng)式的數(shù)字
const message = ref('Hello, Vue 3!'); // 創(chuàng)建一個響應(yīng)式的字符串3. 訪問和修改引用的值
// 訪問和修改引用的值 // 使用 ref() 創(chuàng)建的響應(yīng)式引用會返回一個對象 // 該對象有一個 .value 屬性來訪問和修改其值 console.log(count.value); // 0 count.value++; // 修改值 console.log(count.value); // 1
4. 在模板中的使用
<template>
// 在模板中,不需要使用 .value 。當(dāng)在模板中使用時,ref 會自動解包
<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. 與對象的結(jié)合使用
const user = ref({
name: 'Alice',
age: 25,
});
// 訪問和修改對象屬性
console.log(user.value.name); // Alice
user.value.age++; // 修改屬性
console.log(user.value.age); // 26當(dāng)我們在模板中使用了 ref 時,在改變了 這個 ref 的值時,Vue 會自動檢測到這個變化,并且相應(yīng)地更新 DOM。


ref ( ) 是基于 reactive( ) 編寫的。
二、reactive( )
在 Vue 3 中,reactive() 是一個用于創(chuàng)建響應(yīng)式對象的函數(shù)。它是 Vue 3 組合式 API 的一部分,允許開發(fā)者將普通對象轉(zhuǎn)換為響應(yīng)式對象,從而在數(shù)據(jù)變化時自動更新視圖。
使用對象:對象類型
****不需要使用 . value
1.導(dǎo)入 reactive ( ) 函數(shù)
// 從 Vue 中導(dǎo)入
import { reactive } from 'vue';2.創(chuàng)建響應(yīng)式對象
// 創(chuàng)建響應(yīng)式對象
const state = reactive({
count: 0,
message: 'Hello, Vue 3!',
});3. 訪問和修改響應(yīng)式屬性
// 訪問和修改響應(yīng)式屬性 // 可以像訪問普通對象一樣訪問和修改響應(yīng)式對象的屬性。 // Vue 會自動追蹤這些屬性的變化,并在它們變化時更新視圖。 console.log(state.count); // 0 state.count++; // 修改屬性 console.log(state.count); // 1
4. 支持嵌套對象的響應(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()返回一個包含.value屬性的對象,而reactive()返回的是一個直接可用的響應(yīng)式對象。- reactive 重新分配一個新對象,會失去響應(yīng)式。(可以使用Object.assign 來整體替換)。
- 使用原則:
- 若需要一個基本類型的響應(yīng)式數(shù)據(jù),必須使用 ref ;
- 若需要一個響應(yīng)式對象,層級不深,ref ,reactive 都可以使用;
- 若需要一個響應(yīng)式對象,且層級較深,推薦使用 reactive。


到此這篇關(guān)于Vue 中ref( ) 和 reactive( ) 響應(yīng)式數(shù)據(jù)的使用方法的文章就介紹到這了,更多相關(guān)Vue ref( ) 和 reactive( ) 響應(yīng)式數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue報錯Failed to execute 'appendChild&apos
這篇文章主要為大家介紹了vue報錯Failed to execute 'appendChild' on 'Node'解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
vue中解決異步交互數(shù)據(jù)出現(xiàn)延遲問題
這篇文章主要介紹了vue中解決異步交互數(shù)據(jù)出現(xiàn)延遲問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
vue獲取token實現(xiàn)token登錄的示例代碼
最近新做了個vue項目,正好項目中有登錄部分,本文就詳細(xì)的介紹一下登錄部分的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),感興趣的小伙伴們可以參考一下2021-11-11
解決vue打包報錯Unexpected token: punc的問題
這篇文章主要介紹了解決vue打包報錯Unexpected token: punc的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
利用vite創(chuàng)建vue3項目的全過程及一個小BUG詳解
Vite作為一個構(gòu)建工具,提供了一種快速的方法來構(gòu)建Vue應(yīng)用,而Vue3?則是一個前端框架,提供了強大的功能來構(gòu)建和管理前端項目,下面這篇文章主要給大家介紹了關(guān)于利用vite創(chuàng)建vue3項目的全過程及一個小BUG的相關(guān)資料,需要的朋友可以參考下2023-04-04

