vue3的优势
vue2先选式api VS vue3组合式api
create-vue
使用create-vue创建项目
项目目录和关键文件
组合式API
setup选项和执行时机
-
执行时机:比beforeCreate还要早
-
setup函数中,获取不到this,this是undefined
-
-
在setup选项中编写数据和函数,最后需要return才能在模板中应用
-
setup语法糖
reactive和ref函数
reactive
ref函数
- 本质:是在原有传入数据的基础上,外层包成了复杂类型对象
- 底层:包成复杂类型对象后,再借助 reactive 实现的响应式
- 注意点:
- 在脚本中访问数据,需要通过 变量.value访问
- 在template中,则不需要
computed
watch
deep深度监视
- watch默认的是浅层监视,即ref传入的是简单数据类型,可以直接监视,但若传入复杂数据类型则监视不到,需要配置deep深度监视
- deep深度监听复杂对象的每一个属性的变化情况
精确监听对象的某个属性
生命周期函数
父子通信
父传子
defineProps原理
子传父
模板引用
- 调用ref函数,生成一个ref对象
- 通过ref标识,进行绑定
- 通过ref对象.value即可访问到绑定的元素(必须渲染完成后才能拿到,在onMounted函数里引用)
defineExpose()
provide 和 inject
- 作用:顶层组件向任意的底层组件传递数据和方法,实现跨层组件通信
跨层传递普通数据
跨层传递响应式数据
跨层传递函数 => 给子孙后代传递可以修改数据的方法
vue3新特性 - defineOptions
vue3.3新特性 - defineModel
- 使用v-model后
- 这是一个试验性质的特性,需要在vite.config.js里面配置
Pinia
什么是Pinia
手动添加Pinia到vue项目
- 安装pinia包
- 创建pinia实例并挂载到vue上
- 具体使用
- 修改数据 — actions和getters
actions异步实现
storeToRefs()
-
store是一个用reactive包装的对象,如果直接对其进行结构,会破坏响应式
-
为了解决这个问题,可以使用storeToRefs()函数
-
方法可以直接解构