最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中的ref與reactive使用方法對比

 更新時間:2023年04月19日 14:15:01   作者:_XU  
Vue3 提供了兩個新的 API:ref 和 reactive,它們可以幫助我們更好地管理和處理響應(yīng)式數(shù)據(jù),這篇文章主要介紹了vue3中的ref與reactive的區(qū)別和使用方法,需要的朋友可以參考下

Vue3 與之前的版本相比有很多改進(jìn),其中最重要的改進(jìn)之一是對響應(yīng)式數(shù)據(jù)的處理方式。Vue3 提供了兩個新的 API:refreactive,它們可以幫助我們更好地管理和處理響應(yīng)式數(shù)據(jù)。在這篇文章中,我們將詳細(xì)介紹 Vue3 中的 refreactive 的區(qū)別和使用方法。

一、ref

ref 是 Vue3 中的一個函數(shù),它可以將一個普通的變量轉(zhuǎn)化為一個響應(yīng)式變量。使用 ref 的時候,我們需要傳入一個初始值,ref 會返回一個包含了這個初始值的對象。

使用 ref 的語法如下所示:

import { ref } from 'vue';
const count = ref(0);

在上面的代碼中,我們創(chuàng)建了一個名為 count 的變量,它的初始值為 0。通過調(diào)用 ref 函數(shù),我們將 count 變量轉(zhuǎn)化為了一個 ref 對象。在組件中使用 count 的時候,我們需要通過 .value 來訪問它的值,且ref.value = 可以修改它的值。但是當(dāng) ref 在模板中作為頂層屬性被訪問時,它們會被自動“解包”,所以不需要使用 .value。:

<template>
  <div>{{ count }}</div>
</template>
------------------
<script setup>
import { ref } from 'vue';
const count = ref(0);
console.log(count)//RefImpl {...}
console.log(count.value)//0
//使用.value改變count
count.value = 3;
console.log(count.value)//3
</script>

注意:在標(biāo)簽中使用無需加.value,在函數(shù)中使用必須要加.value

除此之外,ref 還可以用來監(jiān)聽 DOM 元素的變化:

<template>
  <div ref="myDiv">這是一個 DOM 元素</div>
</template>

<script>
  import { ref, onMounted } from 'vue';

  export default {
    setup() {
      const myDiv = ref(null);

      onMounted(() => {
        console.log(myDiv.value.innerHTML);
      });

      return {
        myDiv,
      };
    },
  };
</script>

在上面的代碼中,我們創(chuàng)建了一個名為 myDivref 對象,并將它賦值給了一個 div 元素。在組件的 setup 函數(shù)中,我們使用了 onMounted 鉤子函數(shù),在組件渲染完成之后,打印出了 myDiv 元素的 innerHTML。

二、reactive

reactive 是 Vue3 中的另一個 API,它可以將一個普通的對象轉(zhuǎn)化為一個響應(yīng)式對象。與 ref 不同的是,reactive 返回的是一個響應(yīng)式的對象,而不是一個包含值的對象。我們可以通過訪問響應(yīng)式對象的屬性來獲取或修改它的值。

使用 reactive 的語法如下所示:

import { reactive } from 'vue';
const state = reactive({
  count: 0,
});

在上面的代碼中,我們創(chuàng)建了一個名為 state 的響應(yīng)式對象,它包含了一個名為 count 的屬性,初始值為 0。

在組件中使用 state 的時候,我們可以像訪問普通對象的屬性一樣訪問它的屬性:

<template>
  <div>{{ state.count }}</div>
</template>

除了訪問屬性之外,reactive 也可以對普通 JavaScript 對象或數(shù)組進(jìn)行響應(yīng)式處理,可以通過 reactive 將一個普通對象轉(zhuǎn)化為響應(yīng)式對象,從而實(shí)現(xiàn)對整個對象的響應(yīng)式追蹤,例如:

const obj = { a: 1, b: 2 };
const reactiveObj = reactive(obj);

// 響應(yīng)式追蹤
reactiveObj.a = 3;
console.log(obj.a); // 輸出 3

reactive 還可以在嵌套對象和數(shù)組中創(chuàng)建響應(yīng)式對象,例如:

const obj = { 
  a: 1, 
  b: { c: 2 },
  d: [1, 2, 3]
};
const reactiveObj = reactive(obj);

// 響應(yīng)式追蹤
reactiveObj.b.c = 3;
reactiveObj.d.push(4);

reactive 還支持在嵌套對象中使用 toRefs 將響應(yīng)式對象的屬性轉(zhuǎn)換為響應(yīng)式引用,方便在模板中使用。例如:

const obj = reactive({ a: 1, b: { c: 2 } });
const { b } = toRefs(obj);

// 模板中使用
<template>
  <div>{{ b.c }}</div>
</template>

總之,reactive 除了訪問屬性之外還能處理整個對象或數(shù)組的響應(yīng)式追蹤,以及支持在嵌套對象中使用 toRefs 方便在模板中使用。

三、ref和reactive的使用對比

1.ref的使用方法

ref創(chuàng)建的變量可以通過.value來獲取和修改其值。例如:

import { ref } from 'vue'

// 創(chuàng)建ref
const count = ref(0)

// 獲取ref的值
console.log(count.value) // 輸出 0

// 修改ref的值
count.value = 1
console.log(count.value) // 輸出 1

2. reactive的使用方法

reactive創(chuàng)建的對象需要通過解構(gòu)賦值的方式獲取和修改其屬性值。例如:

import { reactive } from 'vue'

// 創(chuàng)建reactive對象
const obj = reactive({
  count: 0
})

// 獲取reactive對象的屬性值
console.log(obj.count) // 輸出 0

// 修改reactive對象的屬性值
obj.count = 1
console.log(obj.count) // 輸出 1

四、總結(jié)

在Vue 3中,refreactive都是響應(yīng)式的API,但是它們的用途不同。ref用于創(chuàng)建簡單的值類型變量,而reactive則用于創(chuàng)建復(fù)雜的對象。ref創(chuàng)建的變量需要使用.value來獲取和修改其值,而reactive創(chuàng)建的對象需要使用解構(gòu)賦值來獲取和修改其屬性值。當(dāng)我們在開發(fā)Vue 3應(yīng)用時,需要根據(jù)具體的場景選擇使用ref或者reactive。在創(chuàng)建簡單的值類型變量時,使用ref可以更方便地獲取和修改其值。而當(dāng)我們需要創(chuàng)建復(fù)雜的對象時,使用reactive可以更方便地進(jìn)行響應(yīng)式更新。同時,Vue 3也提供了toReftoRefs這兩個API,用于將reactive對象的屬性轉(zhuǎn)換為ref對象,方便獲取和修改其值。

到此這篇關(guān)于vue3中的ref與reactive的文章就介紹到這了,更多相關(guān)vue3中的ref與reactive內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+element-ui監(jiān)聽滾動實(shí)現(xiàn)錨點(diǎn)定位方式(雙向),錨點(diǎn)問題

    vue+element-ui監(jiān)聽滾動實(shí)現(xiàn)錨點(diǎn)定位方式(雙向),錨點(diǎn)問題

    這篇文章主要介紹了vue+element-ui監(jiān)聽滾動實(shí)現(xiàn)錨點(diǎn)定位方式(雙向),錨點(diǎn)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue非父子組件通信問題及解決方法

    vue非父子組件通信問題及解決方法

    這篇文章主要介紹了vue非父子組件通信問題及解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • ?面試問題Vue雙向數(shù)據(jù)綁定原理

    ?面試問題Vue雙向數(shù)據(jù)綁定原理

    這篇文章主要介紹了?面試問題Vue雙向數(shù)據(jù)綁定原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Vue編寫多地區(qū)選擇組件

    Vue編寫多地區(qū)選擇組件

    這篇文章主要為大家詳細(xì)介紹了Vue編寫一個挺靠譜的多地區(qū)選擇組件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vuex 動態(tài)注冊方法 registerModule的實(shí)現(xiàn)

    vuex 動態(tài)注冊方法 registerModule的實(shí)現(xiàn)

    這篇文章主要介紹了vuex 動態(tài)注冊方法 registerModule的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Vant Weapp組件踩坑:picker的初始賦值解決

    Vant Weapp組件踩坑:picker的初始賦值解決

    這篇文章主要介紹了Vant Weapp組件踩坑:picker的初始賦值解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vuex命名空間的使用

    vuex命名空間的使用

    本文主要介紹了vuex命名空間的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue自定義開發(fā)滑動圖片驗(yàn)證組件

    vue自定義開發(fā)滑動圖片驗(yàn)證組件

    這篇文章主要為大家詳細(xì)介紹了vue自定義開發(fā)滑動圖片驗(yàn)證組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue3中g(shù)etCurrentInstance獲取組件實(shí)例踩坑詳細(xì)記錄

    vue3中g(shù)etCurrentInstance獲取組件實(shí)例踩坑詳細(xì)記錄

    getCurrentInstance()是Vue.js3?Composition?API中的一個函數(shù),它的作用是獲取當(dāng)前組件的實(shí)例對象,下面這篇文章主要給大家介紹了關(guān)于vue3中g(shù)etCurrentInstance獲取組件踩坑的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • vue中jsencrypt與base64加密解密的實(shí)用流程

    vue中jsencrypt與base64加密解密的實(shí)用流程

    vue項目里面使用到的加密和解密的方法,本文主要介紹了vue中jsencrypt與base64加密解密的實(shí)用流程,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10

最新評論

尉犁县| 乌鲁木齐县| 福州市| 公安县| 西乌| 石林| 会东县| 宁陕县| 双桥区| 京山县| 西乌珠穆沁旗| 安庆市| 沈阳市| 湖南省| 常州市| 孝昌县| 华坪县| 盖州市| 汪清县| 砀山县| 岚皋县| 海门市| 光泽县| 老河口市| 武乡县| 岱山县| 通海县| 平乡县| 虎林市| 商南县| 河源市| 武胜县| 清河县| 三台县| 聂拉木县| 工布江达县| 灯塔市| 杂多县| 彰化市| 张家港市| 鸡西市|