Vue3.0
(1)简要了解
ref和reactive
computed和watch
新的生命周期函数
provide和inject
Fragment--文档碎片
Teleport--瞬移组件的位置
Suspense--异步加载组件的loading界面
全局API的修改
将原来的全局API转移到应用对象
模板语法变化
npm install -g @vue/cli
vue create project
vite是一个有原生ESM驱动的web开发构建工具。在开发环境基于浏览器原生ES import开发,他做到了本地快速开发启动,在生产环境下基于Rollup打包
npm install -g create-vite-app
npm init vite-app
cd
npm install
npm run dev
js中操作数据:xxx.value
模板中操作数据:不需要.value
Vue2的响应式:
数组:通过重写数组更新数组一系列更新元素的方法来实现元素修改的劫持
直接通过下标替换元素或更新length,界面不会自动更新arr[1]={}
Vue3的响应式
通过Reflect反射:动态对被代理对象的相应属性进行特定的操作
1、在beforeCreate之前执行一次,此时组件对象还没有创建
2、this是undefined,不能通过this来访问data/computed/methods/props
3、其实所有的composition API相关回调函数中也都不可以
1、一般都是返回一个对象,内部的属性和方法是给html模板使用的
2、setup返回对象中的属性会与data函数返回对象的属性合并成为组件对象的属性
3、setup返回对象中的方法会与methods中的方法合并成为组件对象的方法
4、Vue3中尽量不要混合使用data和setup及methods和setup(因为methods中可以访问setup提供的属性和方法,但是在setup中不能访问data和methods)
5、setup不能是一个async函数:因为返回值不再是return的对象,而是promise.模板看不到return对象中的属性数据
1、setup(props,context)/setup(props,{attrs,slots,emit})
2、props:是一个对象,里面有父组件向子组件传递的数据,并且是在子组件中使用props接收到的所有属性
3、Context:是一个对象,里面有attrs对象,emit方法,slot对象
4、attrs:获取当前组件标签上的所有属性,但是该属性是在props中没有声明接收的所有对象,相当于this.$attrs
5、slots:包含所有传入的插槽内容的对象,相当于this.$slots
6、emit:用来分发自定义事件的函数,相当于this.$emit
1、与computed配置功能一致
2、只有getter
3、有getter和setter
1、与watch配置功能一致
2、监视指定的一个或多个响应式数据,一旦数据变化,就自动执行监听回调
3、默认初始时不执行回调,但可以通过配置immediate为true,来指定初始时立即执行第一次
4、通过配置deep为true,来指定深度监视
1、不用直接指定要监视的数据,回调函数中使用的哪些响应式数据就监视哪些响应式数据
2、默认初始时就会执行第一次,从而可以收集需要监视的数据
3、监视数据发生变化时回调
(8)生命周期
组合式API还提供了以下调试钩子函数:onRenderTracked和onRenderTriggered
(9)自定义hook函数
把一个响应式对象转换成普通对象,该普通对象的每个property都是一个ref
应用:当从合成函数返回响应式对象时,toRefs非常有用,这样消费组件就可以在不丢失响应式的情况下对返回的对象进行分解使用
问题:reactive对象取出的所有属性值都是非响应式的
解决:利用toRefs可以将一个响应式reactive对象的所有原始属性转换为响应式的ref属性
利用ref函数获取组件中的标签元素
功能需求:让输入框自动获取焦点