美文网首页
React 中组件间通信的几种方式

React 中组件间通信的几种方式

作者: AMONTOP | 来源:发表于2019-06-03 12:02 被阅读0次

1、父组件向子组件通信
父组件通过向子组件传递 props,子组件得到 props 后进行相应的处理


image.png

2、子组件向父组件通信


image.png

3、跨级组件之间通信
父组件向子组件的子组件通信,向更深层的子组件通信

思路1:中间组件层层传递 props
如果父组件结构较深,那么中间的每一层组件都要去传递 props,增加了复杂度,并且这些 props 并不是这些中间组件自己所需要的。当组件层次在三层以内可以采用这种方式,当组件嵌套过深时,就考虑其他方式

思路2:使用 context 对象
context 相当于一个全局变量,是一个大容器,我们可以把要通信的内容放在这个容器中,这样一来,不管嵌套有多深,都可以随意取用
使用 context 也很简单,需满足:

1、上级组件要声明自己支持 context,提供 context 中属性的 PropTypes,并提供一个函数来返回相应的 context 对象
2、子组件要声明自己需要使用 context,并提供其需要使用的 context 属性的 PropTypes
3、父组件需提供一个 getChildContext 函数,以返回一个初始的 context 对象

如果组件中使用构造函数(constructor),还需要在构造函数中传入第二个参数 context,并在 super 调用父类构造函数是传入 context,否则会造成组件中无法使用 context。
Sub.js

import React from "react";
import SubSub from "./SubSub";
const Sub = (props) =>{
    return(
        <div>
            <SubSub />
        </div>
    );
}
export default Sub;

SubSub.js:

import React,{ Component } from "react";
import PropTypes from "prop-types";

export default class SubSub extends Component{
    // 子组件声明自己需要使用 context
    static contextTypes = {
        color:PropTypes.string,
        callback:PropTypes.func,
    }
    render(){
        const style = { color:this.context.color }
        const cb = (msg) => {
            return () => {
                this.context.callback(msg);
            }
        }
        return(
            <div style = { style }>
                SUBSUB
                <button onClick = { cb("我胡汉三又回来了!") }>点击我</button>
            </div>
        );
    }
}

image.png image.png image.png

4、非嵌套组件间通信
或者说是兄弟组件间
首先需要:

我们需要使用一个 events 包:
npm install events --save
新建一个 ev.js,引入 events 包,并向外提供一个事件对象,供通信时使用:

image.png image.png

通信参考网址:https://blog.csdn.net/zhengjie0722/article/details/81979919

本文章参考了,原创来源于https://www.jianshu.com/p/fb915d9c99c4,若本文有错误的地方,请大家帮忙指出哦!谢谢

相关文章

  • React 中组件间通信的几种方式

    在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子...

  • React 中组件间通信的几种方式

    1、父组件向子组件通信父组件通过向子组件传递 props,子组件得到 props 后进行相应的处理 2、子组件向父...

  • react 组件间通信的几种方式

    通过 props 传递 1,共同是数据放在父组件上,特有的数据放在自己的组件的内部(state),2,通过 pro...

  • react通信

    通信的几种方式 一般来说,react里边有几种常用的方式:父到子,子到父,兄弟组件之间的通信。 ===== 父向子...

  • React中组件通信的几种方式

    首次发表在个人博客 需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关...

  • React中组件通信的几种方式

    需要组件之进行通信的几种情况 父组件向子组件通信 子组件向父组件通信 跨级组件通信 没有嵌套关系组件之间的通信 1...

  • React组件通信的几种方式--TypeScript

    React组件通信的几种方式--TypeScript 通过todoList示例进行学习,首先创建基于TypeScr...

  • React Native 架构之 Redux介绍

    React 在 React 中,UI 以组件的形式来搭建,组件之间可以嵌套组合。另,React 中组件间通信的数据...

  • 07-02-React 类组件

    目标 掌握类组件的定义和使用; 掌握 React 组件间通信的方式; 掌握类组件的生命周期。 内容 在 React...

  • Flutter|常用数据通信组件

    在做需求时经常会遇到组件间通信,本篇汇总了几种常用的通信方式。 父子组件之间的通信 最简单的方式就是通过构造器传递...

网友评论

      本文标题:React 中组件间通信的几种方式

      本文链接:https://www.haomeiwen.com/subject/nlrxxctx.html