参考: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