vue3provide和inject实现跨层级组件间通信祖孙组件

Posted web半晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue3provide和inject实现跨层级组件间通信祖孙组件相关的知识,希望对你有一定的参考价值。


1、爷爷组件(页面)

1.1、html部分

<template>
  <h2>provide 与 inject</h2>
  <p>当前的颜色: color </p>
  <button @click="color = 'red'">红色</button>
  <button @click="color = 'yellow'">黄色</button>
  <button @click="color = 'green'">绿色</button>
  <hr />
  <Son />
</template>

1.2、typescript部分

import  defineComponent, provide, ref  from "vue";
import Son from "./components/Son.vue";
export default defineComponent(
  name: "App",
  components: 
    Son,
  ,
  setup() 
    // 响应式的数据
    const color = ref("red");
    // 提供数据
    provide("color", color);
    return 
      color,
    ;
  ,
);

2、父组件

2.1、html部分

<template>
  <h3>Son子级组件</h3>
  <hr />
  <GrandSon />
</template>

2.2、typescript部分

import  defineComponent  from "vue";
import GrandSon from "./GrandSon.vue";
export default defineComponent(
  name: "Son",
  components: 
    GrandSon,
  ,
);

3、孙子组件

3.1、html部分

<template>
  <h3 :style=" color ">GrandSon孙子组件</h3>
</template>

3.2、typescript部分

import  defineComponent, inject  from "vue";
export default defineComponent(
  name: "GrandSon",
  setup() 
    // 注入的操作
    const color = inject("color");
    return 
      color,
    ;
  ,
);

以上是关于vue3provide和inject实现跨层级组件间通信祖孙组件的主要内容,如果未能解决你的问题,请参考以下文章

React什么是组件跨层级通信,有哪些使用场景实例?

Vue Provide / Inject 详细介绍(跨组件通信响应式变化版本变化)

16.如何优雅地获取跨层级组件实例(拒绝递归)

vue之$children和$parent, provide和inject用法以及使用style的方式 显示背景图片

Vue 开发实战基础篇 # 12:常用高级特性provide/inject

Vue 开发实战基础篇 # 13:如何优雅地获取跨层级组件实例(拒绝递归)