07 vue3 composition API学习使用

optionsAPI缺点:相关逻辑代码太分散,代码不易复用,难以阅读维护

为了开始使用Composition API,我们需要有一个可以实际使用它(编写代码)的地方,setup()

目录

setup函数

reactive API使用

ref API使用

readonly API使用

Reactive判断的API

toRefs 与 toRef(reactive对象解构)

ref其他的API

customRef 自定义ref使用

computed 计算属性 API

watchEffect 侦听数据变化 API(自动收集依赖)

Watch API (侦听数据改变 惰性)

生命周期钩子

Provide函数

Inject函数

setup顶层编写(实验特性 了解)

开发中代码抽取

setup函数

父组件通讯props

props选项依旧要写,规则和optionsAPI一样,并且在template中依然是可以正常去使用props中的属性,比如message;要想在setup函数中使用,要通过setup第一个形参

setup不可以使用this

 setup返回值

setup函数的返回值可以在template中直接使用,类似data选项,但是const count=0  不是响应式的

reactive API使用

 reactive函数对传入的类型有限制,必须是数组或对象类型

ref API使用

ref 会返回一个可变的响应式对象,该对象作为一个响应式的引用维护着它内部的值,这就是ref名称的来源;

它内部的值是在ref的 value 属性中被维护的

 ref的自动解包

 ref也可用来获取元素或组件对象

 在setup中获取不到titleRef.value的值,需要在onMounted后

readonly API使用

看名字就知道,只读,当我们通过reactive或ref创建的响应式对象传递给子组件时,不想子组件可以修改,可以使用readonly

Reactive判断的API

不常用,但需要了解

toRefs 与 toRef(reactive对象解构)

如果我们使用ES6的解构语法,对reactive返回的对象进行解构获取值,那么之后无论是修改结构后的变量,还是修改reactive 返回的state对象,数据都不再是响应式的

 这种做法相当于已经在info.age和age.value之间建立了 链接,任何一个修改都会引起另外一个变化

ref其他的API

 了解

customRef 自定义ref使用

 双向绑定的属性进行debounce(节流)的操作

computed 计算属性 API

使用方法与optionsAPI 类似 传入一个函数(get) 或者对象(包含get set)

 watchEffect 侦听数据变化 API(自动收集依赖)

watchEffect用于自动收集响应式数据的依赖

基本使用

 手动停止监听

 watchEffect清除副作用

当我们在watchEffect发送网络请求时,如果侦听器停止,或者watchEffect触发频繁,上一次网络请求还没结束,又发送一次网络请求,造成网络请求过多,我们应该把上一次网络请求停止掉,即为清除副作用

我们给watchEffect传入的函数被回调时,其实可以获取到一个参数:onInvalidate 当副作用即将重新执行 或者 侦听器被停止 时会执行该函数传入的回调函数; 我们可以在传入的回调函数中,执行一些清楚工作

 watchEffect执行时机

 Watch API (侦听数据改变 惰性)

watch API 与options选项中类似

watch是惰性的,第一次不会直接执行,需要手动指定侦听数据,可访问数据改变前后值

 侦听多个数据源

watch的选项

 直接侦听reactive对象(不写成getter函数),会默认开启深度侦听

生命周期钩子

 Provide函数

 如果子孙组件需要修改数据,必须在父组件中修改,把方法传给子组件

Inject函数

setup顶层编写(现在强烈推荐)

 顶层编写代码都会暴露给模板template

父组件不能通过ref或取子组件的方法,子组件必须暴露出来才可以

 开发中代码抽取

compositionAPI非常有利代码的复用

一般我们把一些相关代码抽取到一个hook里(借鉴react,社区中以use开头)

 欢迎大家留言,一起学习,共同进步,点点收藏与关注,下次不迷路

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值