以下分别从vue2-vue3 不同的方便进行学习,主要包含api风格、什么是响应式api、vue3中的计算属性、vue3中的响应式监听、vue3中的组件间传值、vue3中的动态组件、新状态管理pinia;
最后包含一部分TS学习的基础内容以及学习目标;
1.vue-api风格
选项式api、组合式api
2.响应式 api
ref:ref(初始值)函数包装的变量为响应式变量、该值变更时会触发重新渲染
reactive:reactive(引用类型)同理 ref ,但仅能操作对象、数组等引用类型
reactive(初始值)返回的引用可直接操作、无需 .value
reactive({})解构操作依然为只读、且丢失响应式
toRef:toRef(响应式对象,‘属性名称’)取出响应式对象x中的某个属性、且保持同源
响应式对象、取出的响应式属性会联动更新
toRefs:toRefs(响应式对象)将参数转为普通对象、但该对象的每个属性指向响应式对象属性
响应式对象会影响普通对象、反之则不行
toRefs 就是把响应式的reactive对象,分解成无数的响应式 ref
readonly:readonly(普通对象或变量|响应式/ref)返回原值的只读代理
isRef:isRef(变量)判断参数变量是否为 ref
isReactive:isReactive(变量)判断参数变量是否为 reactive
isReadonly:检查传入的值是否为只读对象
unRef:返回 unRef(参数是普值返回本身 | 参数是 ref 返回 ref. value)
shallowRef:与 ref 不同、shallowRef是浅层响应式、只对 .value 响应式
3.计算属性 computed
计算属性用于缓存计算结果、且完成计算逻辑封装[计算响应式数据]
computed(有返回值的函数)computed 会返回一个只读的 ref 引用
computed 返回的值被 vue 称为计算属性
需要注意的是:计算属性是带有响应式数据源追踪的
4.响应式监听 watch/watchEffect
watch:
监听当前组件一个或多个响应式数据源、并在数据源变化时调用所给的回调函数
执行次数:0-N次
注意: watch 也可在子组件中 监听父组件传递过来的响应式对象/属性
watchEffect:(组件内)
立即运行 watchEffect 参数函数且响应式地追踪其依赖、并在依赖更新时再次执行
watchEffect 执行次数:1~n
watchEffect 内部若操作响应式数据源且变更时、还会触发执行
5.组件传值
父传子:
数据为单向,传递给子组件后不可更改只可读,但保持数据特征(响应式依然是响应式)
通过defineProps Api 实现
子传父:
子组件定义自定义事件、父组件绑定该事件通过处理函数的参数获取数据
通过defineEmits Api 实现
依赖注入:
依赖注入允许数据跨级传递、但仅允许高 到 低传递(不支持反向流转)
import { provide, inject } from 'vue'
父级组件:provide('key', data)
儿孙组件:const data = inject("key')
使用比较少,尽量避免多组件嵌套的方式
6.动态组件
组件也可使用 v-if 控制显式或隐藏、但 vue 提供针对机制以获得更多控制行为
<component :is="组件名称" />[component 是 vue 内置类似组件的元素]
未在:is="组件名称” 中显式的组件、将被卸载
7.状态管理 pinia
模块定义:
状态管理模块约定于 . / src/stores/xxx.js 目录、一个文件对应一个状态管理模块
持久化:
持久化允许将 pinia 中的状态存储在 session/LocalStorage 对象上
pinia 持久化需安装插件 pinia-plugin-persistedstate 来支持
数据解构(对于复杂结构数据):
结构后方便使用,尽量不要去进行修改,按照统一规范进行pinia存储的状态进行修改,不好把控
8.TypeScript
- dataType -> 数据类型
- 基础类型
- 联合类型
- 类型断言
- 类型推断
- interfaceTs -> 接口类型
- 可选属性
- 只读属性
- 函数类型
- 类类型
- 接口继承接口
- classTs -> 类
- 类的基本使用
- 构造器
- 继承 (父类与派生类)
- 访问修饰符
- 存取器
- 静态属性、静态方法
- 抽象类
- function -> 函数
- 命名函数
- 匿名函数
- 函数的可选参数和默认参数
- 函数的剩余参数
- 函数重载
- 泛型、多个泛型