使用原生的方式管理状态
第一类所提到的几种方式是最基础的组件通信的方式, 可以通过如下的一个最简单的例子,
数据存放在父组件:
1 | import React, { PureComponent, Component } from "react"; |
使用ContextAPI实现:
1 |
|
从上面ContextAPI的例子可以看到, 我们不需要一层层的传递props到底层的节点, 只需要最外层使用Provider包裹一下, 然后再需要使用数据的底层组件使用 Consumer包裹一下, 数据就能实现从顶层到底层的跨层级传递, redux里面connect实现的原理也是如此, 后续会详细介绍.
自定义事件
没有嵌套关系组件之间的通信可以通过自定义事件来进行通信
1 | import React, { PureComponent, Component } from "react"; |
组件A如果依赖组件B的状态, 可以监听组件B的状态变化事件,进而获取数据, 这种方式本质上是一种观察者模式. 和状态数据共享其实是两回事, 最终达到的目的是一样的. 在这一理念甚至已经衍生出相关的框架了 cyclejs