vue3-组合式api-provide/inject

provide/inject 适用于跨级通信,例如在父组件中改变值,在孙组件中通过依赖注入的方式能获取到父组件中改变的这个值

一、父组件

<template>
  <div>
    <!-- 子组件 -->
    <son></son>
    <button @click="changeName">改变名字</button>
  </div>
</template>

<script>
import son from "./son.vue";

import { provide, ref } from "vue";

export default {
  components: {
    son,
  },
  setup() {
    const name = ref("张三");

    //把name提供出去
    provide("name", name);

    //改变名字
    function changeName() {
      name.value = "李四";
    }

    return {
      changeName,
    };
  },
};
</script>
 
二、子组件
<template>
  <div>
    <h2>我是子组件</h2>
    name: {{ name }}
    <!-- 孙组件 -->
    <grandson></grandson>
  </div>
</template>

<script>
import grandson from "./grandson.vue";
import { inject } from "vue";

export default {
  components: {
    grandson,
  },
  setup() {
    //依赖注入
    const name = inject("name");

    return {
      name,
    };
  },
};
</script>

三、孙组件
<template>
  <div>
    <h2>我是孙组件</h2>
    name: {{ name }}
  </div>
</template>

<script>
import { inject } from "vue";

export default {
  setup() {
    //依赖注入
    const name = inject("name");

    return {
      name,
    };
  },
};
</script>
 
四、运行项目界面效果如下

点击改变名字按钮 子组件 孙组件 name 由张三变为李四

出  处:https://www.cnblogs.com/xiao-wo-niu/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

 

 

 

 

 

 

 

posted on 2022-11-09 13:21  一只向上爬的小蜗牛  阅读(88)  评论(0编辑  收藏  举报