• Vue3.0——常用的Composition API(监听属性、Vue3生命周期、Teleport、自定义事件、状态驱动的动态 CSS、Suspense)


    目录

    一、常用的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,如果数据是一个嵌套的多层的引用数据,改变里面层的数据,是可以监听到的。但是得不到旧值。

    1. <script>
    2. // 注意:vue2.x和vue3.x不要混用
    3. // 1.引入
    4. import { watch, ref,reactive } from "vue"
    5. export default {
    6. data() {
    7. return {
    8. }
    9. },
    10. computed: {
    11. },
    12. setup() {
    13. let num = ref(0);
    14. let msg = ref("hello");
    15. let person = reactive({
    16. name:"李国栋",
    17. age:18,
    18. more:{
    19. job:"前端开发工程师",
    20. salary:"12k"
    21. }
    22. })
    23. // 1.监听ref定义的响应式数据
    24. watch(num, (newvalue, oldvalue) => {
    25. console.log("num变量", newvalue, oldvalue);
    26. })
    27. // 2.监听多个ref定义的响应式数据
    28. watch([num, msg], (newvalue, oldvalue) => {
    29. console.log("msg数据变化了", newvalue, oldvalue);
    30. })
    31. let addmsg = () => {
    32. msg.value += "!"
    33. }
    34. //3.监听reactive所定义的一个响应式数据的全部属性
    35. //注意:此处无法正确的获取oldvalue
    36. //注意:并且强制开启了深度监视(deep配置无效)
    37. watch(person, (newvalue, oldvalue) => { //person不能写person.name,因为它是监听一个变量。那么就只有返回函数了,就是下面的4
    38. console.log("person数据变化了", newvalue, oldvalue);
    39. },{deep:false}) //即使设置了false,但是也会强制开启,所以为true
    40. //4.监听reactive所定义的一个响应式数据的某一个属性
    41. //这种方法一般不用
    42. watch(()=>person.name, (newvalue, oldvalue) => {
    43. console.log("person数据变化了", newvalue, oldvalue);
    44. },{deep:false})
    45. return { num, msg, addmsg }
    46. }
    47. }
    48. script>

    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属性:放到指定位置