vue3.0 生命周期 和 provide 和 inject

  • Post author:
  • Post category:vue


1:  Vue3.0 中 提供的生命周期走钩子函数注册函数只可以在setup() 函数中使用。

2:注册组件

<template>
  <Demo></Demo>
</template>

<script>
   import Demo form './Demo.vue'
   export dafuult {
     components: {
        Demo
     }
   }
</script>

依赖注入: vue3.0 中注入

3.1: Vue3.0 中提供了provide 和 inject 提供了依赖注入, 用于实现组件之间的通讯。 类似于Vue2 中的provide 和 inject。

3.2: Vue3.0 中提供了provide 和 inject 可以用于跨多级组件通信。

注册组件:
<template>
  <div class="app">
    <h1>钩子函数---- {{money}}</h1>
    <hr />
    <Demo></Demo>
  </div>
</template>

<script>
  import Demo form './Demo.vue'
  import { ref, provide } form 'vue'
  export default {
    components: {
      Demo
    },
    setup() {
     // provide 和 inject
     const money = ref(100)  // 使用ref 函数变成响应式数据

     const changeMoney = (m) => {
        money.value = m
     }

     // 组件提供了money 属性
     provide('money', money);
     provide('changeMoney', changeMoney);

     return {
       money,
     }
    }
  }
</script>

<style>

</style>


// 希望把父组件的数据传递到子组件中: 
子组件 Demo
<template>
  <div class="demo">我是demo组件 ---- {{money}}</div>
  <button @click="fn">修改</button>
</template>
<script>
  import { inject } form 'vue'
  export default {
    props: {
      money: Number
    }
    setup(props) {
      // 注册数据
      const money = inject('money');
      // 注册事件
      const changeMoney = inject('changeMoney')
      const fn = ()=> {
        changeMoney(100)
      }
      return {
       money,
       fn
     }
    }
  }
</script>


优点: 就是只要父组件提供好数据(属性), 子组件如果使用就是用inject 函数用来接收即可。
每一个子组件如果想要使用直接inject 就可以了inject 数据就可以了。  (适用于组件之间深层次数据传递)



版权声明:本文为weixin_45677987原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。