Vue3.0——常用的Composition API(监听属性、生命周期、Teleport、属性、自定义事件、状态驱动的动态 CSS、注册组件、uspense、 isRef等)

目录

一、常用的Composition API(组合API)

 7.监听属性

8.Vue3生命周期

1) 什么是生命周期

2)  Vue2.x中的生命周期

3) Vue3.x的生命周期

4) vue3 新增的生命周期钩子

9.Teleport

10.属性

1. 组件内部 还是可以用2.0

2.vue3组件内部组合式API setup中取属性值

3.setup语法糖中获取属性值

11.自定义事件

1)事件名

2)定义自定义事件

3)`v-model` 参数

4)多个 `v-model` 绑定

12.状态驱动的动态 CSS

13.注册组件

1)  组件内部

2)vue3组件内部组合式API setup语法糖中注册组件  

3)注册全局组件

4)定义同步组件:

5.1)定义局部异步组件:

5.2)定义全局异步组件:

13.Suspense

14. isRef   toRef   toRefs  readonly

1)isRef:

2) toRef

3) toRefs

4)readonly

15. 组合式API compostionAPI 的属性和上下文对象


一、常用的Composition API(组合API)

1.setup      2.ref函数    3.reactive函数     4.Vue3.0中的响应式原理 (面试题)

5.Vue3.0中组件的使用    6.计算属性    7.监听属性    8.Vue3.0生命周期

9.Teleport     10.自定义事件    11.状态驱动的动态css    12.Suspense

 7.监听属性

- 与vue2.x中的watch配置功能一致


- 注意
  - 监视reactive定义的响应式数据时,oldvalue无法正确获取,强制开始了深度监视(deep的配置失效)
  - 监视reactive定义的响应式数据的某一个值时:deep配置有效

注意:

1、如果将原来的引用数据,改为和原来一摸一样的引用数据,去watch,也算是改变了,所以watch也会触发

2、使用的是reactive,如果数据是一个嵌套的多层的引用数据,改变里面层的数据,是可以监听到的。但是得不到旧值。



8.Vue3生命周期

created可以访问this了

created做网络请求的时候,页面还没出来

mounted做网络请求的时候,页面出来了

1) 什么是生命周期

  Vue中每个组件都是独立的,每个组件都有一个属于它的生命周期,从一个组件创建、数据初始化、挂载、更新、销毁、这就是一个组件所谓的生命中周期

2)  Vue2.x中的生命周期

beforeCreate   created
beforeMount    mounted
beforeUpdate  updated
beforeDestroy  destroyed
activated     deactivated   
errorCaptured 

3) Vue3.x的生命周期

在Vue3.x中,新增了一个setup生命周期函数,setup执行的时机是在beforeCreate生命函数之前执行,因为在这个函数中不能通过this来获取实例的;

同时为了命名的统一,

将beforeDestory改名为beforeUnmount,

destoryed改名为unmounted

beforeCreate(建议使用setup代替)created(建议使用setup代替)

选项式API
setup
beforeMount     mounted   
beforeUpdate    updated
beforeUnmount   unmounted

4) vue3 新增的生命周期钩子

我们可以通过在**生命周期函数**前加**on**来访问组件的生命周期

**Composition API 形式的生命周期钩子**

组合式API

onBeforeMount  onMounted   (unmounted==>app组件挂载了以后执行)
onBeforeUpdate  onUpdated
onBeforeUnmount  onUnmounted
onErrorCaptured
onRenderTracked
onRenderTriggered

effect


9.Teleport

Vue 鼓励我们通过将 UI 和相关行为封装到组件中来构建 UI。我们可以将它们嵌套在另一个内部,以构建一个组成应用程序 UI 的树。

然而,有时组件模板的一部分逻辑上属于该组件,而从技术角度来看,最好将模板的这一部分移动到 DOM 中 Vue app 之外的其他位置

就是让它不要渲染到vue里面

模态弹框

to属性:放到指定位置





10.属性

1. 组件内部 还是可以用2.0



//子组件MyBox1


2)定义自定义事件

​        可以通过 `emits` 选项在组件上定义发出的事件

//父组件


//子组件


3)`v-model` 参数

//父组件


//子组件
//1.接收参数
props:["title"]
//2.定义事件
emits: ['update:title']
//3.触发事件
this.$emit("update:title","子组件传递给父组件的值")

4)多个 `v-model` 绑定

//2.0这样写会有矛盾
 
		
//2.0应该这样写:


js: 
changemsg2(arg){this.msg2=arg}
changemsg3(arg){this.msg3=arg}
		
		
//3.0
 

//父组件


//子组件
//1.接收参数
props:["msg1","msg2"]
//2.定义事件
emits: ['update:msg1','update:msg2']
//3.触发事件
this.$emit('update:msg1',"子组件传递给父组件的值1")
this.$emit('update:msg2',"子组件传递给父组件的值2")

APP.vue


Box.vue

 

12.状态驱动的动态 CSS

单文件组件的

学习——面试题/笔试题:css语法中的变量

13.注册组件

7种方式,最常用的是第二种

1)  组件内部