vue3.0梳理之Componsition API(一)

Componsition API故名思意就是组合api,是vue3.0中的重要更新

首先来看ComponstionAPI中都有什么

  • ref 和 reactive
  • computed 和watch
  • 新的生命周期函数
  • 自定义函数–hooks函数
  • Teleport - 瞬移组件的位置
  • Suspense - 异步加载组件
1. ref 和 reactive
// ref写法,这里并没有什么玄机,就是简单的添加响应
const count = ref(0)

ref 函数传入一个值作为参数,返回一个基于该值的响应式Ref对象,该对象中的值一旦被改变和访问,都会被跟踪到

//reactive使用这里也是传入对象添加相应
const state = reactive({ count: 0 })

大致解读与ref无有什么差别,有的人会质疑两种方法是否是多余了呢,其实只是为了考虑到大家的编程风格,我个人建议使用第二种,传入对象,因为ref类型的数据有isRef属性,其实也就是在底层自动转为reactive

//像是这样
ref(18) -> reactive({value: 18})

reactive在解构后return的时候,会失效,使用oRefs包裹,可以解决

2.computed 和watch

有一点我们注意不到的地方就是vue3.0取消了渲染watch概念,取而代之的effect副作用钩子,来完成当依赖项更改而促使视图,当然watch使用与2.0无异

watch
  • watch监听对象可以是reactive产生的state对象下某属性,也可以是ref属性
    ,因为与之前没有什么差别,就不做代码的示例了,简单总结一下watch
//监视指定的一个或多个响应式数据, 一旦数据变化, 就自动执行监视回调
//默认初始时不执行回调, 但可以通过配置immediate为true, 来指定初始时立即执行第一次
//通过配置deep为true, 来指定深度监视
  • 还有watchEffect函数
 watchEffect(()=>{
    fullName3.value=user.firstName+'-'+user.lastName
 })
//不用直接指定要监视的数据, 回调函数中使用的哪些响应式数据就监视哪些响应式数据
//默认初始时就会执行第一次, 从而可以收集需要监视的数据
//监视数据发生变化时回调
computed

vue3 计算属性和vue2变化不大,只需要注意,它返回的是一个响应式的ref对象,所以在使用的时候需要.value(模板中使用不需要,会自动展开)

3.新的生命周期函数
  • beforeCreate ---->setup
  • created ---->setup
  • beforeMount ---->onBeforeMount
  • mounted ---->onMounted
  • beforeUpdate ---->onBeforeUpdate
  • updated ---->onUpdated
  • beforeDestory ---->onBeforeUnmount
  • destoryed ---->onUnmounted

1.setup替代了beforeCreate和created,我们认为setup的执行时间在beforeCreate 和created 之间,实际上setup替代了很多的东西,令代码更加的简洁明了

2.需要注意的是生命周期函数不再是默认使用的了,需要从vue中到处后使用,在setup中加’on’关键字使用

import {onBeforeMount, onMounted, onBeforeUpdate, onUpdated, 
  onBeforeUnmount, unMounted} from 'vue'

命名重点变更:beforeDestory => beforeUnmount destroyed => unmounted

4.自定义函数–hooks函数

早在2016年年年中,Dan Abramov写了《Mixins被认为是有害的》一文,他在文中认为,在React组件中使用mixins来重用逻辑是一种反模式,主张远离mixins。 不幸的是,他提到的关于React mixins的缺点也同样适用于Vue。让我们先熟悉一下这些缺点

  • 命名冲突
    ==> 一个组件包含多个相同名称时,本地选项将覆盖混合器选项
    ==> 有多个相同类型的生命周期钩子,添加到钩子数组中依次调用
  • 层级问题
    ==>mixin与引用组件之间无明确的层级所属关系,简单来讲就是我可以在组件中用mixin的数据属性,实际上在混合器中也可以使用预期内的组建的数据属性,这样是有隐患问题的,实际使用中可能会有重构及修改组件中的数据属性,那修改的名称该怎么与mixin中所预期的一致,无法直接暴漏问题,只能运行中报错去寻找

hooks函数解决了弊端,明天梳理hooks及Teleport 和Suspense

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值