VUE3:组合式API

一、什么是组合式 API?

将同一个逻辑关注点相关代码收集在一起。


二、组合式 API 基础

1.setup详解 :

a.在 setup 中应该避免使用this,因为它不会找到组件实例。

b.setup 的调用

  • 发生在data、computed、methods 被解析之前, 所以data/computed/methods
    的内容无法在setup中被获取

c.接受参数props和context。

c>1.props
  1. props 是响应式的,当组件传入新的 prop 时,它将被更新。
  2. setup中的props 无法使用 ES6的解构模式。
  3. 如下面代码中的 第6行。 如果要使用解构模式,可以使用 toRefs。如下面代码中的第7行。注意使用 toRefs 需要引用第1行。
  4. 如下例子中,如果 title传值 不存在,也就是 props 中没有title 的情况下,toRefs 不会为title 创建一个ref。所以需要使用toRef 代替 toRefs。如第8行。
import { toRefs,toRef } from "vue";// 第1行
props:{
     title: String
},
setup(props,content){
  //第6行 let { title } = props  
  //第7行 let { title } = toRefs(props)
  let { title } = toRef(props,'title')//第8行
}
c>2. context
    a. context是一个普通 JavaScript 对象,暴露了其它可能在setup中有用的值attrs/slots/emit/expose
export default {
  // context 是非响应式的,所以可以使用解构赋值,比如1或2,推荐1的写法
  //1
  setup(props, { attrs, slots, emit, expose }) {}
  //2
  setup(props, context) {
    let { attrs, slots, emit, expose } = context
  }
  setup(props, context) {
    // Attribute (非响应式对象,等同于 $attrs)
    console.log(context.attrs)

    // 插槽 (非响应式对象,等同于 $slots)
    console.log(context.slots)

    // 触发事件 (方法,等同于 $emit)
    console.log(context.emit)

    // 暴露公共 property (函数)
    console.log(context.expose)
  }
}
context.expose

如果return 返回了渲染函数 如:return () => h(‘div’) 就不能再返回其他 property。
* property 指元素对象的属性
如果需要将 property 暴露给外部访问,比如通过父组件的 ref,可以使用 expose:

import { h, ref } from 'vue'
export default {
  setup(props, { expose }) {
    const count = ref(0)
    const increment = () => ++count.value

    expose({
      increment
    })

    return () => h('div', count.value)
  }
}

2. 带 ref 的响应式变量

a. 定义: 通过 ref 定义的响应式变量,可以在任何地方都起效。

b. 用法和参数:ref(Array)/ref(Number)/ref(Boolean) …

c. 从 setup 返回的 refs 在模板中访问时是被自动浅解包的,因此不应在模板中使用xx.value。

<template>
      <p>数组:{{array}}</p>
      <p>数字:{{number}}</p>
      <p>布尔:{{boolean}}</p>
 </template>
<script>
import { ref } from 'vue'

setup (props) {
    const array = ref([])
    array.value = [1,2,3]
    const number = ref(0)
    number.value = 1
    const boolean = ref(true)
    boolean.value = false
    return {
      array,
      number,
      boolean
    }
}
</script>

3. 在 setup 内注册生命周期钩子

a.选项式 API 的生命周期选项和组合式 API 之间的映射

 1. beforeCreate -> 使用 setup() 
 2. created -> 使用 setup() 
 3. beforeMount -> onBeforeMount 
 4. mounted -> onMounted 
 5. beforeUpdate -> onBeforeUpdate    
 6. updated -> onUpdated 
 7. beforeDestrory -> onBeforeUnmount 
 8. destroyed -> onUnmounted 
 9. activated ->  onActivated 
10. deactivated ->  onDeactivated  

新增: 
 1. errorCaptured -> onErrorCaptured 
 2. renderTracked ->  onRenderTracked 
 3. renderTriggered ->    onRenderTriggered
:).什么是选项式API? 什么是组合式API?
➢ 选项API:生命周期钩子是被暴露 Vue实例上的选项。不需要导入,只要调用这个方法并为这个生命周期钩子编写代码。
➢ 组合式API:将生命周期钩子导入到项目中,才能使用。有助于保持项目的轻量性
// 选项 API
<script>     
   export default {         
      mounted() {
        
      },         
      updated() {
        
      }     
   }
</script> 
// 组合 API
<script>
import { onMounted } from 'vue'
export default {
   setup () {
         onMounted(() => {
           console.log('mounted')
         })
   }
}
</script>

b. 声明周期图示

在这里插入图片描述

  1. 选项式API 可以和 组合式API一起使用吗?(不建议一起使用)

4. Computed

a. 不可变的响应式ref,表示只接收一个getter

const count = ref(1)
const plusOne = computed(() => count.value + 1)

console.log(plusOne.value) // 2

plusOne.value++ // error

b. 可变的响应式ref,表示接收get 和 set

const count = ref(1)
const plusOne = computed({
  get: () => count.value + 1,
  set: val => {
    count.value = val - 1
  }
})

plusOne.value = 1
console.log(count.value) // 0

5. watch 响应式更改

watch 响应式

  • @params1:想要侦听的响应式引用或getter函数。
  • @params2:回调
  • @params3:可选的配置选项 { deep: true }
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3的组合式API是一种新的编程模式,它使得在Vue组件中可以更灵活地组织和复用逻辑。下面是对Vue 3组合式API的介绍: 1. Composition API组合式API):Vue 3中引入了Composition API,它允许我们将逻辑按照功能进行组合,而不是按照生命周期钩子进行划分。这样可以更好地组织和复用代码。 2. setup函数:在Vue 3中,我们需要在组件中使用setup函数来定义组合式API。setup函数在组件创建之前执行,并且接收两个参数:props和context。我们可以在setup函数中定义响应式数据、计算属性、方法等。 3. reactive函数:reactive函数是Vue 3中用来创建响应式数据的函数。我们可以使用reactive函数将普通对象转换为响应式对象,从而实现数据的双向绑定。 4. ref函数:ref函数是Vue 3中用来创建单个响应式数据的函数。与reactive函数不同,ref函数返回一个包装过的对象,我们需要通过.value属性来访问和修改数据。 5. computed函数:computed函数用来创建计算属性。与Vue 2中的计算属性类似,我们可以使用computed函数来定义一个依赖其他响应式数据的属性。 6. watch函数:watch函数用来监听响应式数据的变化。我们可以使用watch函数来执行一些副作用操作,比如发送网络请求或者更新DOM。 7. 生命周期钩子:在Vue 3中,生命周期钩子函数被废弃了,取而代之的是使用setup函数来处理组件的生命周期逻辑。我们可以在setup函数中使用onMounted、onUpdated等函数来模拟Vue 2中的生命周期钩子。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值