vue3 Composition API使用示例教程
Vue3新增了Composition API。我們只需將實現(xiàn)某一功能的相關(guān)代碼全部放進一個函數(shù)中,然后return需要對外暴露的對象。不同功能的代碼都是一個個函數(shù),最終在setup()函數(shù)中導(dǎo)入這些函數(shù)API,來使用這些功能。
在Vue3中,我們在小型組件仍可以繼續(xù)沿用Options API,而對于大型組件則推薦使用Composition API。
Composition API沒有this,如果要獲取實例可以通過gitCurrentInstance這個函數(shù),要使用它,需要手動引入,Composition API的生命周期,ref,toRef等要使用的話也是需要手動引入的。
<script>
import { useStore } from "vuex";
import { getCurrentInstance } from 'vue'
export default {
name: "ChildA",
setup() {
const instance = getCurrentInstance();
console.log('instance--',instance);
return {};
},
};
</script>用reactive定義響應(yīng)數(shù)據(jù),reactive作用將一個普通對象轉(zhuǎn)換成響應(yīng)式對象,和vue2里面的Options里面的data一樣里面的數(shù)據(jù)都是響應(yīng)式的。
生命周期也發(fā)生了一些變化,setup是beforeCreate和created的組合,vue3中的生命周期除了卸載階段名稱變了,變成onbeforeUnmount和onUnmounted,其它的只是在前面添加了一個on。
vuex在Composition中使用,手動移入vuex,用reactive定義響應(yīng)式數(shù)據(jù),該數(shù)據(jù)有屬性goods,函數(shù)在onMounted生命周期中調(diào)用,生命周期中傳入的是一個函數(shù)。調(diào)用vuex的方法,執(zhí)行后直接給響應(yīng)式數(shù)據(jù)屬性賦值就行了。
最后在調(diào)用toRef或者toRefs對響應(yīng)式數(shù)據(jù)屬性做個處理,做個處理就可以直接使用這個屬性(直接goods),不需要再去用“state.goods"的方式使用了。toRef或toRefs變量命名建議用xxx.Ref和xxx.Refs。
ref生成一個響應(yīng)式數(shù)據(jù),可用于模板和reactive(用于模板和reactive不需要通過.value),通過.value修改值。
toRef針對響應(yīng)式對象的一個屬性生成一個ref,ref具有響應(yīng)式,二者保持引用關(guān)系。
toRefs將響應(yīng)式對象轉(zhuǎn)換成普通對象,對象的每個屬性都是一個ref,二者保持引用關(guān)系。
要使用Composition中的方法也需要通過renturn導(dǎo)出。
<script>
import { useStore } from "vuex";
import { reactive, onMounted, toRef, toRefs } from 'vue'
export default {
name: "ChildA",
setup() {
const store = useStore();
const state = reactive({
goods:[]
});
const getData = () => {
store.dispatch("products/getProducts").then((res) => {
state.goods = res
});
};
const addData = () => {
store.dispatch("products/setProducts");
getData();
};
onMounted(() => {
getData();
});
//以toRef形式返回
const goodsRef = toRef(state,'goods');
return { goodsRef, addData };
//以toRefs形式返回
/* const goodsRefs = toRefs(state);
return goodsRefs */
},
};
</script>模板中使用
<template>
<div class="child-a">
ChildA:
<ul>
<!-- 以toRefs形式返回直接取響應(yīng)式對象屬性 -->
<!-- <li v-for="item in goods" :key="item.id">{{ item.name }}</li> -->
<!-- 以toRef形式返回 -->
<li v-for="item in goodsRef" :key="item.id">{{ item.name }}</li>
</ul>
<button @click="addData">ChildA-Add</button>
</div>
</template>到此這篇關(guān)于vue3 Composition API使用的文章就介紹到這了,更多相關(guān)vue3 Composition API使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue使用distpicker插件實現(xiàn)省市級下拉框三級聯(lián)動
這篇文章主要介紹了Vue使用distpicker插件實現(xiàn)省市級下拉框三級聯(lián)動,比如通過JSON文件生成對應(yīng)的區(qū)域下拉框,element-china-are插件,包括distpicker插件,通過代碼講解如何使用distpicker插件實現(xiàn)省市級三聯(lián)跳動,需要的朋友可以參考下2023-02-02
Vue 項目中如何使用fullcalendar 時間段選擇插件(類似課程表格)
最近完成一個項目,需要選擇一個會議室,但是最好能夠通過在圖上顯示出該 會議室在某某時間段內(nèi)已經(jīng)被預(yù)定了,初看這個功能感覺很棘手,仔細分析下實現(xiàn)起來還是挺容易的,下面通過示例代碼講解Vue項目中使用fullcalendar時間段選擇插件,感興趣的朋友一起看看吧2024-07-07
vue使用v-model進行跨組件綁定的基本實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于vue使用v-model進行跨組件綁定的基本實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
vue使用echarts實現(xiàn)動態(tài)數(shù)據(jù)的示例詳解
這篇文章主要為大家詳細介紹了vue如何使用echarts實現(xiàn)動態(tài)數(shù)據(jù),文中的示例講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
vue3+arco design通過動態(tài)表單方式實現(xiàn)自定義篩選功能
這篇文章主要介紹了vue3+arco design通過動態(tài)表單方式實現(xiàn)自定義篩選,本文主要實現(xiàn)通過動態(tài)表單的方式實現(xiàn)自定義篩選的功能,用戶可以自己添加篩選的項目,篩選條件及篩選內(nèi)容,需要的朋友可以參考下2024-05-05

