当前位置:   article > 正文

Vue3 跨组件传参 provide 与 inject

Vue3 跨组件传参 provide 与 inject

provide 用于:让父组件 传递数据。

inject 用于:让后代组件 接收数据。

语法格式:

  1. // 传递数据
  2. import { provide } from 'vue';
  3. provide('数据名', 数据);
  4. // 接收数据
  5. import { inject } from 'vue';
  6. let 变量 = inject('数据名');

跨组件传参:

第一层组件:传递数据。

  1. <template>
  2. <h3>我是第一层组件</h3>
  3. <p>{{ info.name }} : {{ info.age }}</p>
  4. <hr />
  5. <Two></Two>
  6. </template>
  7. <script setup>
  8. // 引用 provide 函数
  9. import { provide, reactive } from 'vue'
  10. import Two from "../components/Two.vue"
  11. let info = reactive({ name: "张三", age: 18 });
  12. // 给后代组件传递数据
  13. provide('info', info);
  14. </script>

第二层组件:接收数据。 

  1. <template>
  2. <h3>我是第二层组件</h3>
  3. <p>{{ info.name }} : {{ info.age }}</p>
  4. <hr />
  5. <Three></Three>
  6. </template>
  7. <script setup>
  8. // 引用 inject 函数
  9. import { inject } from 'vue'
  10. import Three from "../components/Three.vue"
  11. // 接收数据
  12. let info = inject('info');
  13. </script>

第三层组件:接收数据。

  1. <template>
  2. <h3>我是第三层组件</h3>
  3. <p>{{ info.name }} : {{ info.age }}</p>
  4. </template>
  5. <script setup>
  6. // 引用 inject 函数
  7. import { inject } from 'vue'
  8. // 接收数据
  9. let info = inject('info');
  10. </script>

最终效果:

:传递的数据可以在任意一层后代组件中使用。 

原创作者:吴小糖

创作时间: 2024.3.26

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/324680
推荐阅读
相关标签
  

闽ICP备14008679号