发布时间:2023-09-20 19:30
🍳作者: 贤蛋大眼萌,一名很普通但不想普通的程序媛 \\color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛} 贤蛋大眼萌,一名很普通但不想普通的程序媛🤳
🙊语录: 多一些不为什么的坚持 \\color{#0000FF}{多一些不为什么的坚持} 多一些不为什么的坚持
📝本文章收录于专栏:Vue框架
💭 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂 o f f e r ,程序员的必备刷题平台 − − 牛客网 \\color{#ff7f50}{眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台--牛客网} 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台−−牛客网
在Vue2中,我们编写组件的方式是Options API:
在Vue3中,我们编写组件的方式是Composition API (VCA):
setup函数中有两个参数:props
和context
props: 就是父组件传递过来的属性被放到props
对象中
注意:我们如果在setup函数中想要去使用props,不可以直接通过this去获取
context: 也称为 SetupContext,包含三个属性
setup 函数有返回值,返回值才是可以在template 中被使用的。
但是,在setup 函数中的数据不是响应式的
使用 reactive 和 ref 函数可以实现setup函数中定义的数据提供响应式特性。
区别:
基本使用:
Vue 有个单项数据流的规范。如果通过子组件去修改父组件里的值是不符合规范的。
为了避免开发人员做这个不规范的操作,通过reactive或者ref可以获取到一个响应式的对象,传入给其他地方(组件)的这个响应式对象希望在另外一个地方(组件)被使用,但是不能被修改。
vue给我们提供了 readonly 方法,readonly会返回原始对象的只读代理
在开发中常见的readonly方法会传入三个类型的参数:
注意:readonly返回的对象都是不允许修改的,但是经过raedonly处理过的对象时允许被修改的,readonly本质上只是在返回的对象的setter方法被劫持了而已。
Reactive判断的API | 操作 |
---|---|
isProxy | 检查对象是否是由 reactive 或 readonly创建的 proxy |
isReactive | 检查对象是否是由 reactive创建的响应式代理 |
isReadonly | 检查对象是否是由 readonly 创建的只读代理 |
toRaw | 返回 reactive 或 readonly 代理的原始对象 |
shallowReactive | 创建一个响应式代理,它跟踪其自身 property 的响应性,但不执行嵌套对象的深层响应式转换 |
shallowReadonly | 创建一个 proxy,使其自身的 property 为只读,但不执行嵌套对象的深度只读转换 |
ref判断的API | 操作 |
---|---|
torefs | 将reactive返回的对象中的属性都转成ref,实现解构数据响应式 |
unref | 获取一个ref引用中的value |
isref | 判断值是否是一个ref对象 |
shallowRef | 创建一个浅层的ref对象 |
triggerRef | 手动触发和 shallowRef 相关联的副作用 |
当我们的某些属性是依赖其他状态时,我们可以使用计算属性来处理。
在vue2中,OptionAPI直接使用
computed
选项来完成在vue3中,compositionAPI 我们可以在setup函数中使用 computed 方法来编写一个计算属性。
如何使用?
只需要定义一个ref对象,绑定到元素或者组件的ref属性上即可
setup 可以用来替代 data 、 methods 、 computed 等等这些选项,也可以替代 生命周期钩子
引用官网的图:
因为
setup
是围绕beforeCreate
和created
生命周期钩子运行的,所以不需要显式地定义它们。换句话说,在这些钩子中编写的任何代码都应该直接在setup
函数中编写
咋 Option API 中,可以通过 watch 选项来侦听data 或者props 的数据变化,而在 Composition API中,可以通过watch和watchEffect 来完成响应式数据的侦听。
- watchEffect:用于自动收集响应式数据的依赖;
- watch:需要手动指定侦听的数据源;
注意:当侦听到某些响应式数据变化时,如果希望再执行某些操作,这个时候就可以使用 watchEffect
当使用
<script setup>
范围里的值也能被直接作为自定义组件的标签名使用
注意:响应式数据需要通过ref、reactive来创建
为了在声明 props 和 emits 选项时获得完整的类型推断支持,我们可以使用 defineProps
和 defineEmits API
,它们将自动 地在 <script setup>
中可以使用
使用
PS:
求知无坦途,学问无捷径。👣 一步一个脚印,你走过的路,每一步都算数。 \\color{#ff7f50}{一步一个脚印,你走过的路,每一步都算数。} 一步一个脚印,你走过的路,每一步都算数。 每一次进步都是对自己努力的肯定。如果读了文章有收获,不如一起来学习,一起进步吧。传送门🚪刷题神器