React组件之间的通信与发布订阅模型

84 阅读2分钟

我正在参加「掘金·启航计划」

React组件之间的通信与发布订阅模型

1. 父-子组件之间的通信

  • 父组件通过props将数据传递给子组件,子组件通过this.props.属性名调用

2. 子-父组件之间的通信

  • 父组件通过props传递一个修改自身数据state的方法给子组件
  • 子组件调用父组件传递过来的方法,传递参数,修改父组件的属性。相当于子组件调用父组件的方法来更新父组件的数据,或者向父组件传递数据

3.兄弟节点之间的通信

  •  兄弟节点之间的通信是建立在父子组件,子-父组件之间通信的基础上的
  •  兄弟节点拥有同一个父节点,用父节点来当作通信的媒介
  •  在一个兄弟节点中修改父组件的数据,然后父组件会同步到另一个需要通信的子组件,就完成了一次通信

发布-订阅模型

特点

  • 发布订阅模式中,对于发布者Publisher和订阅者Subscriber没有特殊的约束,他们好似是匿名活动,借助事件调度中心提供的接口发布和订阅事件,互不了解对方是谁。
  • 松散耦合,灵活度高,常用作事件总线
  • 易理解,可类比于DOM事件中的dispatchEvent和addEventListener。

缺点

  • 当事件类型越来越多时,难以维护,需要考虑事件命名的规范,也要防范数据流混乱。

观察者模式

观察者模式与发布订阅模式相比,耦合度更高,通常用来实现一些响应式的效果。在观察者模式中,只有两个主体,分别是目标对象Subject,观察者Observer。