Composition API 详解

87 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情

Composition API 详解

Setup 函数

setup()函数是在created生命周期函数  被完全初始化之前执行的函数。通过ref()和reactive()函数的使用,可以完全替换掉以前的data{}语法形式。

基本语法:setup(props, context){return{name:'test'}}

Setup()函数特点
  • return 的内容,在模板中直接可以使用,包括变量和方法
  • 在 setup( )中不能使用 this 关键字

context 参数三个关键词:attrs、slots、emit

相关函数

  • ref()函数

    • 作用:把 setup 函数中不可响应的基础类型数据变成响应数据。
    • 使用前需要先引入:const {ref} = Vue;
    • 基础语法: let name = ref("test")
  • reactive()函数 作用:把 setup 函数中不可响应的非基础类型数据变成响应数据。 使用前需要先引入:const {reactive} = Vue; 基础语法: const nameObj = reactive({name:'hello'})

  • readonly() 函数

    • 作用:在 setup()函数中把一个响应式引用变成只读属性,如果改变就会报错。
    • 使用前需要先引入:const {readonly} = Vue;
  • toRefs()函数

    • 把响应式数据进行解构返回,在模板中就可以直接使用了。
    • 使用前需要先引入:const {toRefs} = Vue;
    • 基础语法:const { name } = toRefs(nameObj)
  • computed()函数

    • 作用:随着一个变量的变化,而随之变化的方法,也叫计算函数/计算属性
    • 使用前需要先引入: const {computed} = Vue;
    • 基础语法:const countNew=computed(()=>{return count.value +5})
    • 内部方法 get:()=>{};set:()=>{}
  • watch()函数

    • 作用:对 setup 函数里某个值的变化进行监听,可以得到变化后的值和变化前的值。但它具备一定的惰性 lazy,也就是第一次不会执行,只有变化时才会执行。
    • 使用前需要先引入: const {watch} = Vue;
    • 基础语法:watch(name,(currentValue,prevValue)=>{console.log(currentValue,prevValue)})
    • 变成立即执行,增加第三个参数。immediate: true
  • watchEffect()函数

    • 和 watch()函数基本一样,但是它是立即执行,没有惰性 immediate。不需要传递侦听内容,自动感知代码依赖。数据有依赖才会执行里边的代码,如果没有依赖,就不会执行。
    • 和 Watch()函数的不同点: 1.立即执行,没有惰性 immediate 2.不需要传递侦听内容,自动会感知代码依赖,不需要传递很多参数,只要传递一个回调函数 3.不能获取之前数据的值
    • 使用前需要先引入: const {watchEffect} = Vue;
    • 基础语法:watchEffect(()=>{})
  • provide() 函数

    • 作用:在 setup 函数中向子组件或者孙子组件进行传值(可跨层级进行传值)。
    • 使用前需要先引入: const {provide} = Vue;
    • 基础语法:provide('name','test')
  • inject() 函数

    • 作用:在 setup 函数中接收父组件传递过来的值(可跨层级进行接受)。
    • 使用前需要先引入: const {inject} = Vue;
    • 基础语法:provide('name','hello') , hello 为传递值,不存在时的默认值

setup 中的生命周期函数

在使用这些函数前,都需要引入。

  • onBeforeMount() 在 Vue 应用被挂载之前,自动执行的函数
  • onMounted() 在 Vue 应用挂载完成之后,自动执行的函数
  • onBeforeUpdate() 在数据发生变化之前,自动执行的函数
  • onUpdated() 在数据发生变化之后,自动执行的函数
  • onBeforeUnmount() 在组件销毁之前,自动执行的函数
  • onUnmounted() 在组件销毁之后,自动执行的函数
  • onRenderTracked() 在收集响应时依赖时,自动执行的函数
  • onRenderTriggered() 每次页面渲染被触发时,自动执行的函数

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情