欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue組合式API淺顯入門示例詳解

 更新時間:2023年03月26日 11:36:52   作者:算了_  
這篇文章主要為大家介紹了vue組合式API淺顯入門示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

在react推出了hook之后,vue也在vue3里面添加了組合式API,鑒于這個時間間隔,我有理由認(rèn)為組合式api和hook還是有一些關(guān)系的。不過在我具體的使用中,我并沒發(fā)現(xiàn)這兩個方法太多的相同點,不過鑒于vue自動發(fā)布之后就與react之間那剪不斷理還亂的量子力學(xué)關(guān)系,估計會有很多人會問及這倆之間的異同。我還沒到能分辨出異同的地步,就簡單的介紹一下vue的組合式API吧。

組合式API

在vue3.0發(fā)布的時候,組合式API也隨著發(fā)布會進入到大眾的視野。官網(wǎng)把原來的使用方式命名為選項式API,同時官網(wǎng)也明確表示選項式API是由組合式API所實現(xiàn)的,所以大概后面vue的主推方向應(yīng)該就是組合式API了。

我學(xué)習(xí)框架的方法是從語法到詞法,再到運行狀態(tài)。那么先從語法開始學(xué)習(xí),照舊還是以官網(wǎng)為例。

//代碼一
<script setup> 
    import { ref, onMounted } from 'vue' 
    // 響應(yīng)式狀態(tài) 
    const count = ref(0) 
    // 用來修改狀態(tài)、觸發(fā)更新的函數(shù) 
    function increment() { 
        count.value++ 
    }
    // 生命周期鉤子 
    onMounted(() => { 
        console.log(`The initial count is ${count.value}.`)
    })
</script>
<template>
    <button @click="increment">Count is: {{ count }}</button> 
</template>

可以看出,組合式API和原來的選項式API還是有差別的,原來的選項式API可以直接使用生命周期,變量聲明之類的內(nèi)置方法,組合式API則需要先引入再使用。

先聲明一下,這個不是vue3.0版本的組合式API寫法,是vue3.2版本發(fā)布時的語法糖,但是也是我個人建議使用的方法,畢竟不推薦的話也不會出這個語法糖。3.0版本的寫法有些繁瑣,但是大致上大差不差。

//代碼二
import { reactive } from 'vue' 
export default {
    // `setup` 是一個專門用于組合式 API 的特殊鉤子函數(shù) 
    setup() { 
        const state = reactive({ count: 0 })
        // 暴露 state 到模板
        return { state }
    }
}

這個是最初的組合式API的寫法,比起新版的語法糖只是多了一個setup和需要將變量return出來,而這個setup就是我認(rèn)為的組合式API的核心。

setup

最初的響應(yīng)式API以 setup 函數(shù)作為入口函數(shù), setup函數(shù)必須返回兩種類型的值:第一是對象,第二是函數(shù)。

當(dāng) setup 函數(shù)返回對象時,對象中的數(shù)據(jù)或方法可以在 template中被使用,也就相當(dāng)于data函數(shù)里面的變量。當(dāng) setup函數(shù)返回函數(shù)時,函數(shù)會被作為 render 函數(shù)。

不過可預(yù)見的是當(dāng)頁面數(shù)據(jù)量變大的時候,setup函數(shù)會變得巨大,而且return的內(nèi)容也會膨脹,所以vue3.2的語法糖省略了setup函數(shù)的包裹,而是直接將setup放到script里面,里面的代碼就等同于放到了setup函數(shù)中,而且還省略了return的步驟。雖然沒有寫出setup函數(shù),但是這段代碼的本質(zhì)就是setup函數(shù)的執(zhí)行。

變量聲明

setup函數(shù)執(zhí)行之后,里面的變量會被直接暴露給組件,由組件使用。就以最上面的代碼一中的count為例,count被聲明之后就可以放到template里面,還可以被increment函數(shù)修改后在頁面中更新,這個就是靠ref方法,但是說ref之前先要說一下組合式API生命對象的方法reactive。

代碼二中的state就是reactive方法聲明的對象,reactive和ref一樣,都是用來聲明變量的,只有通過這兩個方法聲明后的變量才能做到響應(yīng)式更新。這里其實是vue為了讓用戶簡單而導(dǎo)致的復(fù)雜,具體說比較復(fù)雜,我就簡單說說吧。

vue3依然是響應(yīng)式的架構(gòu),通過對聲明的變量監(jiān)聽從而收集到變量的修改事件,已達到響應(yīng)式更新的功能。對vue3有一些了解的用戶都知道,vue3用的是proxy,但是proxy只能做到對對象代理,如果使用了原始類型,像是string,number之類的就沒有辦法了,所以vue3為了監(jiān)聽原始類型的數(shù)據(jù),使用ref去聲明原始類型,從而將原始類型變成對象,看起來通過ref聲明后的依然是原始類型,實際上我們修改的是這個變量的value的值,而不是這個對象的值。

組合式API還有一點就是無法直接修改聲明的變量值。以代碼一為例,無論是count = 3還是count=ref(3)都會導(dǎo)致顯示無法更新。同樣的,代碼二中的state的修改也不可以直接通過state=reactive({a:23})或者state = {a:23}的方式修改。

雖說ref也可以用來生命對象,不過還是不太建議,畢竟還是按照文檔的方式去寫才能做到最方便的維護,畢竟比維護別人的爛代碼更難受的就是維護自己的爛代碼。

當(dāng) ref 在模板中作為頂層屬性被訪問時,它們會被自動“解包”,所以不需要使用 .value。所以代碼一中,template中的count不需要寫作count.value。

說回組合式API,變量修改之后,組合式API和選項式API一樣,是無法做到立刻將顯示更新的,所以想要獲取到變量修改后的頁面元素就需要nextTick,用法和vue的nextTick是一樣的,就不多贅述了。

目前比起選項式API的優(yōu)點

從代碼一和代碼二中可以看出,組合式API里面不需要將變量放到data里面,函數(shù)放到method里面,這樣的話可以讓有相關(guān)性的變量和函數(shù)放到一起。開發(fā)選項式API的時候當(dāng)頁面數(shù)據(jù)量大的時候在method寫函數(shù)的時候忘記了變量名稱,就需要滑到data里面看一下,然后在滑回method繼續(xù)寫函數(shù)。組合式API不能說完全避免,但是能大大減少這種情況的出現(xiàn)。

生命周期

生命周期官網(wǎng)圖片還是挺全的,基本上和選項式API差不多,就是改改名字,去掉了create,改用setup。

Vue2.xVue3
beforeCreatesetup
created
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted

這篇文章中找到了一個對比的列表,大體上是可以一一對應(yīng)的。生命周期的邏輯我就不多贅述了,由于用法不同,所以這里我就根據(jù)代碼一放一個錯誤的例子。

setTimeout(() => { 
    onMounted(() => { 
        // 異步注冊時當(dāng)前組件實例已丟失 
        // 這將不會正常工作 }) 
     }, 100
 )

生命周期可以放到函數(shù)里面,然后在setup里面調(diào)用,但是不能放到異步函數(shù)里面。

大體上回了這些就可以開始開發(fā)項目了,至于計算屬性,監(jiān)聽器之類的,那都是后面的事情,這只是入門文章,過于入門了,所以并不建議熟練掌握的閱讀此文。

以上就是vue組合式API淺顯入門示例詳解的詳細(xì)內(nèi)容,更多關(guān)于vue組合式API入門的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解vue-cli本地環(huán)境API代理設(shè)置和解決跨域

    詳解vue-cli本地環(huán)境API代理設(shè)置和解決跨域

    這篇文章主要介紹了詳解vue-cli本地環(huán)境API代理設(shè)置和解決跨域,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • vuex-persist 使用場景分析

    vuex-persist 使用場景分析

    Vuex-Persist 是一個用于在 Vuex 中實現(xiàn)持久化狀態(tài)的庫,它可以用來解決應(yīng)用程序在刷新瀏覽器或關(guān)閉頁面后丟失 Vuex store 中狀態(tài)的問題,本文給大家介紹vuex-persist 可以用來干什么,感興趣的朋友一起看看吧
    2023-11-11
  • Vue自定義詢問彈框和輸入彈框的示例代碼

    Vue自定義詢問彈框和輸入彈框的示例代碼

    這篇文章主要介紹了Vue自定義詢問彈框和輸入彈框,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • WebSocket使用以及在vue如何使用問題

    WebSocket使用以及在vue如何使用問題

    這篇文章主要介紹了WebSocket使用以及在vue如何使用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue實現(xiàn)移動端div拖動效果

    vue實現(xiàn)移動端div拖動效果

    這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)移動端div拖動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue如何統(tǒng)一樣式(reset.css與border.css)

    vue如何統(tǒng)一樣式(reset.css與border.css)

    這篇文章主要介紹了vue如何統(tǒng)一樣式(reset.css與border.css),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 關(guān)于vue屬性使用和不使用冒號的區(qū)別說明

    關(guān)于vue屬性使用和不使用冒號的區(qū)別說明

    這篇文章主要介紹了關(guān)于vue屬性使用和不使用冒號的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Vue.js進行查詢操作的實例詳解

    Vue.js進行查詢操作的實例詳解

    這篇文章主要介紹了Vue.js進行查詢操作的實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • Vue項目中解決數(shù)字精度丟失問題

    Vue項目中解決數(shù)字精度丟失問題

    我們知道,浮點類型的數(shù)據(jù),在計算機中是以二進制的方式存儲的,但是表示的數(shù)據(jù)也有個上限和下限,當(dāng)超過限制?,在計算機上顯示只能取最接近的限值,?數(shù)字解析精度丟失說的就是這個現(xiàn)象,所以本文給大家介紹了Vue項目中解決數(shù)字精度丟失問題的解決,需要的朋友可以參考下
    2024-02-02
  • vue3使用localStorage實現(xiàn)登錄注冊功能實例

    vue3使用localStorage實現(xiàn)登錄注冊功能實例

    這篇文章主要給大家介紹了關(guān)于vue3使用localStorage實現(xiàn)登錄注冊功能的相關(guān)資料, localStorage這個特性主要是用來作為本地存儲來使用的,解決了cookie存儲空間不足的問題,需要的朋友可以參考下
    2023-06-06

最新評論