亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

10個Vue3中常用的組合式?API用法詳解

 更新時間:2024年01月03日 08:49:21   作者:爭取不脫發(fā)的程序猿  
通過Vue?3,組合式API增強(qiáng)了我們利用Vue的能力,使我們的代碼更具模塊性和可讀性,本文主要來和大家分享10個常用的Vue3組合式API,希望對大家有所幫助

Vue.js是一個用于開發(fā)Web應(yīng)用程序的強(qiáng)大JavaScript框架。Vue 2 于 2023 年 12 月 31 日停止維護(hù)。而通過Vue 3,組合式API增強(qiáng)了我們利用Vue的能力,使我們的代碼更具模塊性和可讀性。下面分享10個常用的Vue3組合式API:

Refs

在Vue 3中,通過組合式API提供的ref函數(shù),數(shù)據(jù)管理變得更加便利。ref允許我們使用Vue的響應(yīng)式系統(tǒng)跟蹤變量的值,使我們能夠在組件內(nèi)更新這個值。ref還將值包裝起來,以與Vue的響應(yīng)性兼容。這樣,我們可以更靈活地處理和更新組件中的數(shù)據(jù)。

import { ref } from 'vue';  
  
const count = ref(0);  
  
const increment = () => {  
count.value++;  
};  

在這個例子中,定義了一個名為countref,并使用increment函數(shù)遞增它的值。

Computed

使用組合式API創(chuàng)建計(jì)算屬性有助于在組件內(nèi)基于依賴關(guān)系表示和自動更新值。在Vue 3中,可以使用computed函數(shù)來定義計(jì)算屬性。計(jì)算屬性依賴于其他響應(yīng)式數(shù)據(jù),并且只有在依賴發(fā)生變化時才會重新計(jì)算值。這使得在組件中表示和處理衍生數(shù)據(jù)變得更為簡便和高效。

import { ref, computed } from 'vue';  
  
const count = ref(0);  
  
const squared = computed(() => count.value * count.value);  

在這個例子中,定義了一個名為squared的計(jì)算屬性,表示count的平方。

Watch 和 WatchEffect

Vue的watchwatchEffect函數(shù)允許我們觀察值的變化并相應(yīng)地做出反應(yīng)。watch函數(shù)用于監(jiān)視特定數(shù)據(jù)的變化,并在數(shù)據(jù)變化時執(zhí)行回調(diào)函數(shù)。它接受兩個參數(shù):要監(jiān)視的數(shù)據(jù)和回調(diào)函數(shù)。當(dāng)監(jiān)視的數(shù)據(jù)發(fā)生變化時,回調(diào)函數(shù)將被觸發(fā)。watchEffect函數(shù)也用于監(jiān)視數(shù)據(jù)的變化,但它不需要指定要監(jiān)視的特定數(shù)據(jù)。相反,它會自動追蹤在其函數(shù)體中使用的任何響應(yīng)式數(shù)據(jù),并在這些數(shù)據(jù)發(fā)生變化時觸發(fā)回調(diào)函數(shù)。

import { ref, watch, watchEffect } from 'vue';  
  
const count = ref(0);  
  
watch(count, (newValue, oldValue) => {  
    console.log(`Count changed from ${oldValue} to ${newValue}`);  
});  
  
watchEffect(() => {  
    console.log(`Count is: ${count.value}`);  
});  

在這個例子中,watch函數(shù)觀察count值的變化,而watchEffect函數(shù)在每次渲染后觀察count值。

重用方法和函數(shù)

在Vue組件中將方法和函數(shù)定制為自定義鉤子使它們能夠在其他組件中被重復(fù)使用,提高代碼的可讀性和可重用性。我們可以將一些具有通用性的邏輯封裝為函數(shù)或方法,并在需要的時候通過自定義鉤子進(jìn)行重用。這樣做不僅使代碼更易于維護(hù),還提高了組件之間的代碼共享。

  //hooks/useLocalStorage.js
export default function useLocalStorage(key, defaultValue) {  
    const value = ref(JSON.parse(localStorage.getItem(key)) || defaultValue);  
  
const updateValue = (newValue) => {  
    value.value = newValue;  
    localStorage.setItem(key, JSON.stringify(newValue));  
};  
  
return {  
value,  
updateValue,  
};  
}

<script setup>  
import useLocalStorage from '@/hooks/useLocalStorage';  
  
const { value: storedData, updateValue: updateStoredData } = useLocalStorage('dataKey', 'defaultData');  
</script>

在這個例子中,定義了一個名為useLocalStorage的自定義鉤子,用于處理存儲在本地存儲中的值,該值由指定的鍵(key)決定。

生命周期

在組合式API中,通過使用 onMountedonUpdatedonUnmounted 函數(shù)來管理組件的生命周期。onMounted 鉤子在組件被掛載到DOM后調(diào)用。onUpdated 鉤子在組件更新后調(diào)用。onUnmounted 鉤子在組件被銷毀前調(diào)用。

import { onMounted, onUnmounted } from 'vue';  
  
onMounted(() => {  
    console.log('Component is mounted');  
});  
  
onUnmounted(() => {  
    console.log('Component is unmounted');  
});  

在這個例子中,onMounted 函數(shù)捕獲了組件掛載時的時刻,而 onUnmounted 函數(shù)捕獲了組件卸載時的時刻。

API請求和異步

在Vue組件中進(jìn)行API請求和管理異步操作時,可以使用像axios這樣的庫。

import axios from 'axios';
import {ref} from 'vue';    
const fetchData = async () => {  
try {  
const response = await axios.get('https://api.example.com/data');
    console.log('Data:', response.data);  
} catch (error) {
        console.error('Error fetching data:', error);  
}  
};

在這個例子中,使用axios庫進(jìn)行了一個API請求,嘗試檢索數(shù)據(jù)。任何錯誤都被記錄到控制臺。

路由和Vue Router

在Vue項(xiàng)目中啟用頁面之間的導(dǎo)航并配置路由,可以使用Vue Router。

const routes = [
    { path: '/', component: Home },
    { path: '/about', component: About },
];

const router = createRouter({
    history: createWebHashHistory(),
    routes,
});  


<script setup>
        import {useRoute} from 'vue-router';

        const route = useRoute();
</script>

在這個例子中,使用Vue Router建立了一個簡單的路由配置,并使用useRoute函數(shù)在組件內(nèi)部訪問當(dāng)前路由的信息。

Vuex

使用Vuex進(jìn)行大型應(yīng)用的狀態(tài)管理,在大型應(yīng)用中,為了更有效地管理狀態(tài),可以使用Vuex,它是Vue.js官方提供的狀態(tài)管理庫。Vuex允許你在應(yīng)用的多個組件之間共享和管理狀態(tài),以確保狀態(tài)的一致性和可維護(hù)性。

import { createStore } from 'vuex';  
  
const store = createStore({  
state: {  
    count: 0,  
},  
mutations: {  
    increment(state) {  
    state.count++;  
},  
},  
});  

   
<script setup>  
import { useStore } from 'vuex';  
  
const store = useStore();  
</script>

在這個例子中,使用Vuex創(chuàng)建了一個簡單的store,并使用useStore函數(shù)在組件內(nèi)部訪問store。

UI組件

創(chuàng)建可定制和可重用的Vue UI組件,在Vue.js中,你可以創(chuàng)建可定制和可重用的Vue UI組件,使得這些組件在應(yīng)用中能夠靈活適應(yīng)不同的需求。在設(shè)計(jì)組件時,考慮到組件的靈活性、易用性和可維護(hù)性是至關(guān)重要的。

<button :class="buttonClass" @click="handleClick">  
<slot></slot>  
</button>  
</template>  
  
<script setup>  
import { computed } from 'vue';  
  
const buttonClass = computed(() => {  
return 'button ' + (isPrimary ? 'primary' : 'secondary');  
});  
  
const handleClick = () => {  
// Button click operations  
};  

在這個例子中,創(chuàng)建了一個可定制的按鈕組件,通過使用插槽slot實(shí)現(xiàn)動態(tài)內(nèi)容。

測試驅(qū)動開發(fā)(TDD)

測試驅(qū)動開發(fā)是一種開發(fā)方法,其核心理念是在編寫實(shí)際代碼之前先編寫測試。在Vue.js開發(fā)中,TDD可以幫助確保應(yīng)用的各個部分具有良好的測試覆蓋率,提高代碼質(zhì)量和可維護(hù)性。

import { mount } from '@vue/test-utils';  
import MyComponent from '@/components/MyComponent.vue';  
  
test('MyComponent renders correctly', () => {  
const wrapper = mount(MyComponent);  
expect(wrapper.html()).toMatchSnapshot();  
});  

在這個例子中,使用Vue Test Utils進(jìn)行了一個簡單的測試,以確保組件正確渲染。

Vue 3 的 組合式 API 引入了一種新的組件組織形式,以及更靈活的邏輯組織方式。允許將組件的邏輯按照功能劃分到不同的函數(shù)中,而不再局限于原先的選項(xiàng)(data、methods、computed等)。通過創(chuàng)建可復(fù)用的函數(shù),你可以在不同的組件中使用相同的邏輯,從而提高代碼的可維護(hù)性和可復(fù)用性。提供了更好的 TypeScript 支持,使得在 Vue 項(xiàng)目中使用 TypeScript 更加流暢。使得開發(fā)者能夠更好地處理復(fù)雜的組件邏輯,并在項(xiàng)目中更好地利用 TypeScript 的優(yōu)勢.

以上就是10個Vue3中常用的組合式 API用法詳解的詳細(xì)內(nèi)容,更多關(guān)于Vue3組合式 API的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue單向數(shù)據(jù)流的深入講解

    vue單向數(shù)據(jù)流的深入講解

    單向數(shù)據(jù)流方式使用一個上傳數(shù)據(jù)流和一個下傳數(shù)據(jù)流進(jìn)行雙向數(shù)據(jù)通信,兩個數(shù)據(jù)流之間相互獨(dú)立,下面這篇文章主要給大家介紹了關(guān)于vue單向數(shù)據(jù)流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 解決v-model雙向綁定失效的問題

    解決v-model雙向綁定失效的問題

    這篇文章主要介紹了解決v-model雙向綁定失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue實(shí)現(xiàn)圖片上傳預(yù)覽功能

    vue實(shí)現(xiàn)圖片上傳預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)圖片上傳預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 一篇文章帶你吃透Vuex3的狀態(tài)管理

    一篇文章帶你吃透Vuex3的狀態(tài)管理

    Vuex是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式,它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化,下面這篇文章主要給大家介紹了關(guān)于如何通過一篇文章帶你吃透Vuex3的狀態(tài)管理,需要的朋友可以參考下
    2022-07-07
  • vue webpack build資源相對路徑的問題及解決方法

    vue webpack build資源相對路徑的問題及解決方法

    這篇文章主要介紹了vue webpack build資源相對路徑的問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Vue實(shí)現(xiàn)簡易購物車頁面

    Vue實(shí)現(xiàn)簡易購物車頁面

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡易購物車頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • VSCode使React?Vue代碼調(diào)試變得更爽

    VSCode使React?Vue代碼調(diào)試變得更爽

    這篇文章主要為大家介紹了VSCode使React?Vue代碼調(diào)試變得更爽的使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue使用Three.js加載glTF模型的方法詳解

    Vue使用Three.js加載glTF模型的方法詳解

    這篇文章主要給大家介紹了關(guān)于Vue使用Three.js加載glTF模型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 關(guān)于element的表單組件整理筆記

    關(guān)于element的表單組件整理筆記

    這篇文章主要給大家介紹了關(guān)于element的表單組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • vue時間戳和時間的相互轉(zhuǎn)換方式

    vue時間戳和時間的相互轉(zhuǎn)換方式

    本文通過示例代碼介紹了vue時間戳和時間的相互轉(zhuǎn)換方式,通過場景分析介紹了vue3使用組合式api將時間戳格式轉(zhuǎn)換成時間格式(2023年09月28日 10:00),感興趣的朋友一起看看吧
    2023-12-12

最新評論