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

深入探究Vue中探究組合式API的奧秘

 更新時(shí)間:2023年11月30日 09:17:50   作者:小犇孩  
Vue?3中引入了組合式API,它是一種新的代碼組織方式,旨在讓開發(fā)者更靈活地組織和重用Vue組件的邏輯,下面我們就來學(xué)習(xí)一下Vue中常見組合式API的使用吧

1、什么是組合式API

Vue 3中引入了組合式API,它是一種新的代碼組織方式,旨在讓開發(fā)者更靈活地組織和重用Vue組件的邏輯。通過組合式API,開發(fā)者可以將相關(guān)的代碼邏輯組合在一起,而不是按照選項(xiàng)屬性或生命周期函數(shù)的方式來組織代碼。這樣可以更好地封裝和重用邏輯,使得組件更易于維護(hù)和理解。

組合式API的核心是setup函數(shù),它替代了Vue 2中的data、computed、methods等選項(xiàng),用于設(shè)置組件的初始狀態(tài)、計(jì)算屬性、方法等。在setup函數(shù)內(nèi)部,可以使用諸如refreactive等新的函數(shù)來定義響應(yīng)式數(shù)據(jù),以及使用watchcomputed等函數(shù)來定義響應(yīng)式的副作用和計(jì)算屬性。

2、基本使用

    <template>
        <h1>App 組件 --- {{ num }}</h1>
        <button @click="addNum">數(shù)據(jù)自增</button>
    </template>

    <script setup>
    import { ref } from 'vue'
    const num = ref(100)
    function addNum() {
        num.value++
    }
    </script>

3、ref

組合式API中的ref是一個(gè)用于標(biāo)識(shí)和引用資源的機(jī)制。它可以用來指定要操作的特定資源,也可以用來表示資源的關(guān)系和層次結(jié)構(gòu)。在詳細(xì)理解上,可以從以下幾個(gè)方面來解釋:

  • 唯一標(biāo)識(shí)符:ref是一個(gè)唯一標(biāo)識(shí)符,用于在組合式API中準(zhǔn)確定位資源。它可以是資源的ID、路徑或者其他形式的標(biāo)識(shí)符,確保每個(gè)資源都有一個(gè)獨(dú)一無二的引用。
  • 資源定位:通過ref,可以指定要操作的具體資源,例如某個(gè)特定的文檔、數(shù)據(jù)集合或者API端點(diǎn)。這樣可以確保API請(qǐng)求針對(duì)正確的資源進(jìn)行處理。
  • 嵌套關(guān)系:ref還可以表示資源之間的嵌套關(guān)系或者層次結(jié)構(gòu)。例如,可以使用ref來表示文檔所屬的集合,或者表示父子文檔之間的關(guān)系。
  • 引用傳遞:在組合式API中,ref還可以作為參數(shù)傳遞給其他API請(qǐng)求,用于表示資源之間的關(guān)聯(lián)。這樣可以實(shí)現(xiàn)跨資源的操作和查詢。

總之,ref在組合式API中扮演著非常重要的角色,它是確保API請(qǐng)求準(zhǔn)確、精確地定位和操作資源的關(guān)鍵。對(duì)ref的詳細(xì)理解有助于正確構(gòu)建和使用組合式API請(qǐng)求,從而實(shí)現(xiàn)對(duì)資源的有效管理和操作。

4、reactive

組合式API中的reactive指的是API的響應(yīng)式特性。這意味著當(dāng)?shù)讓訑?shù)據(jù)發(fā)生變化時(shí),API將自動(dòng)更新并通知相關(guān)的訂閱者。這種響應(yīng)式特性使得組合式API能夠?qū)崿F(xiàn)實(shí)時(shí)數(shù)據(jù)更新和自動(dòng)同步,從而提供了更加靈活和高效的數(shù)據(jù)交互方式。

具體來說,組合式API的reactive特性可以從以下幾個(gè)方面進(jìn)行詳細(xì)理解:

  • 數(shù)據(jù)響應(yīng):當(dāng)?shù)讓訑?shù)據(jù)發(fā)生變化時(shí),reactive API能夠自動(dòng)感知并更新相關(guān)的數(shù)據(jù)。這意味著無需手動(dòng)輪詢或者刷新數(shù)據(jù),API將會(huì)自動(dòng)將最新的數(shù)據(jù)推送給訂閱者。
  • 實(shí)時(shí)更新:reactive API支持實(shí)時(shí)數(shù)據(jù)更新,這意味著當(dāng)數(shù)據(jù)發(fā)生變化時(shí),相關(guān)的訂閱者會(huì)立即收到更新的通知。這種實(shí)時(shí)性能夠滿足對(duì)于實(shí)時(shí)數(shù)據(jù)交互的需求。
  • 響應(yīng)式查詢:通過reactive API可以進(jìn)行響應(yīng)式查詢,即當(dāng)查詢條件滿足時(shí),API會(huì)自動(dòng)推送相應(yīng)的數(shù)據(jù)變化。這種特性能夠?qū)崿F(xiàn)類似于數(shù)據(jù)庫訂閱的功能,對(duì)于實(shí)時(shí)數(shù)據(jù)查詢和展示非常有用。
  • 訂閱機(jī)制:reactive API通常會(huì)提供訂閱機(jī)制,讓客戶端能夠注冊(cè)對(duì)某個(gè)數(shù)據(jù)源的訂閱,一旦數(shù)據(jù)發(fā)生變化就能夠得到通知。這種機(jī)制使得數(shù)據(jù)交互更加靈活和高效。

總之,組合式API的reactive特性使得數(shù)據(jù)交互變得更加實(shí)時(shí)、高效和靈活,能夠滿足現(xiàn)代應(yīng)用對(duì)于實(shí)時(shí)數(shù)據(jù)交互的需求。對(duì)reactive的詳細(xì)理解有助于充分發(fā)揮組合式API的優(yōu)勢(shì),并構(gòu)建出更加響應(yīng)式和高效的應(yīng)用程序。 總的來說,組合式API提供了一種更靈活、更可組合、更易于測(cè)試和重用的方式來組織Vue組件的邏輯。

5、shallowRef, shallowReactive

可以幫助我們創(chuàng)建一個(gè)響應(yīng)式數(shù)據(jù),但是只有第一層數(shù)據(jù)有響應(yīng)式,深層數(shù)據(jù)沒有響應(yīng)式,除此之外,用法和 ref/reactive 完全相同

6、toRaw

有些時(shí)候我們不希望數(shù)據(jù)進(jìn)行響應(yīng)式實(shí)時(shí)更新,可以通過 toRaw 獲取 ref 或 reactive 引用的原始數(shù)據(jù),通過修改原始數(shù)據(jù),不會(huì)造成頁面的更新,只有通過修改 ref 和 reactive 包裝后的數(shù)據(jù)時(shí)才發(fā)生界面響應(yīng)式變化

    <template>
        <div>
            <button @click="update">+1</button>
            {{ info.name }}
            <button @click="rawUpdate">取消響應(yīng)式修改</button>
        </div>
    </template>
    <script setup>
    import { reactive, toRaw } from "vue";

    const info = reactive({
        name: "張三",
    });

    const update = () => {
        info.name = info.name + 1;
    };

    const rawUpdate = () => {
        /**
         * 取消響應(yīng)式
         * 注意:toRaw 只能用作引用數(shù)據(jù)類型
         */
        const a = toRaw(info);

        // 后續(xù)修改失去作用
        a.name = "李四";
    };
    </script>

7、markRaw

markRaw 包裝后的數(shù)據(jù)永遠(yuǎn)不會(huì)被追蹤,在開發(fā)中不會(huì)使用

8、toRef

toRef 是對(duì)定義的響應(yīng)對(duì)象的某個(gè)屬性進(jìn)行引用

    <template>
        <div>
            {{ info.name }} --- {{ info.age }}
            <button @click="updateName">修改名字</button>
        </div>
    </template>
    <script setup>
    import { ref, toRef } from "vue";

    const info = {
        name: "張三",
        age: 18,
    };
    /**
     * 從info對(duì)象中取出name屬性, 并加上響應(yīng)式
     *
     * 返回的nameRef 的 value屬性的值 就是 name的值
     */
    const nameRef = toRef(info, "name");

    const updateName = () => {
        // 把name改成李四
        nameRef.value = "李四";
    };
    </script>

9、toRefs

遍歷對(duì)象中的所有屬性,將其變成響應(yīng)式數(shù)據(jù),這是因?yàn)?toRef 只能傳一個(gè) key,toRefs 所達(dá)到的效果 與 toRef 一樣

    const state = reactive({
        foo: 1,
        bar: 2,
    });

    const stateAsRefs = toRefs(state);
    /*
        stateAsRefs 的類型:{
            foo: Ref<number>,
            bar: Ref<number>
        }
    */

    // 這個(gè) ref 和源屬性已經(jīng)“鏈接上了”
    state.foo++;
    console.log(stateAsRefs.foo.value); // 2

    stateAsRefs.foo.value++;
    console.log(state.foo); // 3

以上就是深入探究Vue中探究組合式API的奧秘的詳細(xì)內(nèi)容,更多關(guān)于Vue 組合式API的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 分享一個(gè)基于Ace的Markdown編輯器

    分享一個(gè)基于Ace的Markdown編輯器

    相信開發(fā)中或多或少都會(huì)有使用md的時(shí)候。那么一個(gè)簡易的md編輯器顯得尤為重要,如果想要在自己的項(xiàng)目中添加一個(gè)md編輯器,那么不妨來看看這篇文章
    2021-10-10
  • Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼(基于postrender機(jī)制)

    Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼(基于postrender機(jī)制)

    本篇文章給大家介紹基于postrender機(jī)制使用Vue+Openlayer批量設(shè)置閃爍點(diǎn)的實(shí)現(xiàn)代碼,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-09-09
  • Vue插槽具體用法及實(shí)例分析

    Vue插槽具體用法及實(shí)例分析

    本文主要介紹了Vue框架中插槽的使用方法和應(yīng)用場(chǎng)景。通過具體實(shí)例分析,詳細(xì)講解了插槽的具體用法,幫助讀者深入理解Vue中插槽的使用和實(shí)現(xiàn)方式
    2023-05-05
  • vue實(shí)現(xiàn)簡單圖片上傳

    vue實(shí)現(xiàn)簡單圖片上傳

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡單圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 解決vue-cli3創(chuàng)建使用iview定制主題javascriptEnabled找不到該配置項(xiàng)

    解決vue-cli3創(chuàng)建使用iview定制主題javascriptEnabled找不到該配置項(xiàng)

    這篇文章主要介紹了解決vue-cli3創(chuàng)建使用iview定制主題javascriptEnabled找不到該配置項(xiàng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺析vue給不同環(huán)境配置不同打包命令

    淺析vue給不同環(huán)境配置不同打包命令

    本文分步驟給大家介紹vue給不同環(huán)境配置不同打包命令的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Vue中rules的寫法使用小結(jié)

    Vue中rules的寫法使用小結(jié)

    這篇文章主要介紹了Vue中rules的寫法使用小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 帶你一文了解Vue生命周期鉤子

    帶你一文了解Vue生命周期鉤子

    生命周期鉤子又被叫做生命周期時(shí)間,生命周期函數(shù),生命周期鉤子就是vue生命周期中出發(fā)的各類事件,這些事件被稱為生命周期鉤子,下面這篇文章主要給大家介紹了關(guān)于Vue生命周期鉤子的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 詳解vue中移動(dòng)端自適應(yīng)方案

    詳解vue中移動(dòng)端自適應(yīng)方案

    這篇文章主要介紹了vue移動(dòng)端自適應(yīng),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 詳解vue大文件視頻切片上傳的處理方法

    詳解vue大文件視頻切片上傳的處理方法

    前端上傳大文件、視頻的時(shí)候會(huì)出現(xiàn)超時(shí)、過大、很慢等情況,為了解決這一問題,跟后端配合做了一個(gè)切片的功能,接下來就詳細(xì)的給大家介紹一下vue大文件視頻切片上傳的處理方法,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

平南县| 徐州市| 屯昌县| 康定县| 施甸县| 合山市| 耿马| 合水县| 榆树市| 清远市| 白城市| 顺昌县| 拜泉县| 江阴市| 西畴县| 乐业县| 灵寿县| 民权县| 盐边县| 方正县| 花莲市| 通许县| 鄂托克旗| 沈阳市| 开原市| 平遥县| 邯郸县| 广安市| 奈曼旗| 凌海市| 六盘水市| 芜湖县| 云浮市| 交城县| 和政县| 绵阳市| 孝昌县| 泰州市| 淅川县| 左权县| 洛宁县|