參考:https://www.vue3js.cn/docs/zh/guide/composition-api-introduction.html(官網) 或 嗶哩嗶哩上 李南江老師的課
一、組件式API 介紹:
1、setup 組件選項在創建組件之前執行,一旦 props 被解析,並充當合成 API 的入口點。
2、執行 setup 時尚未創建組件實例,因此在 setup 選項中沒有 this。
3、setup 中 返回的 { },里面的項 都會 掛在 組件對象【即this】下,組件的其余部分可用。
注意:掛在 this 下的 變量 不一定是 響應式的,vue3中響應式的變量 必須通過給 API 創建。
4、帶 ref 的響應式變量:在 Vue 3.0 中,我們可以通過一個新的 ref 函數使任何響應式變量在任何地方起作用。
注意:1、setup中要 使用 創建的 ref 變量,必須通過 .value 屬性獲取 或 賦值,才能響應式。
2、ref函數只能監聽簡單類型的變化,不能監聽復雜類型的變化(對象/數組)。復雜類型使用reactive
const number = ref(10)
console.log(number.value);
5、reactive 的響應式變量:
6、生命周期鈎子注冊內部 setup: onMounted 生命周期
import { ref, onMounted } from 'vue'
setup (props) {
const repositories = ref([])
const getUserRepositories = async () => {
repositories.value = await fetchUserRepositories(props.user)
}
onMounted(getUserRepositories)
return {
repositories,
getUserRepositories
}
}
6、watch 響應式更改:
import { ref, watch } from 'vue'
const counter = ref(0)
watch(counter, (newValue, oldValue) => {
console.log('The new counter value is: ' + counter.value)
})
7、獨立的 computed 屬性:
import { ref, computed } from 'vue'
const counter = ref(0)
const twiceTheCounter = computed(() => counter.value * 2)
counter.value++
console.log(counter.value) // 1
console.log(twiceTheCounter.value) // 2
二、Setup: https://vue3js.cn/docs/zh/guide/composition-api-setup.html
1、使用 setup 函數時,它將接受兩個參數:props、context
三、生命周期鈎子: https://vue3js.cn/docs/zh/guide/composition-api-lifecycle-hooks.html
四、提供/注入【多層組件嵌套時,數據的傳遞】: https://vue3js.cn/docs/zh/guide/composition-api-provide-inject.html
五、模板引用: https://vue3js.cn/docs/zh/guide/composition-api-template-refs.html
