36.组件通信的方式有哪些?

  • 父子组件通信
  • 跨层级之间的通信
  • 没有任何逻辑关系的通信

1. 方案

1.1 父子组件通信

  • 父组件像子组件通信:父组件通过props像子组件传递需要的信息
  • 子组件向父组件通信:props+回调的函数

1.2 跨层级的通信

  • 使用props,利用中间组件层层传递,但是如果父组件层级结构较深,那么中间每一次都要去传递props,增加了复杂度,并且这些props还并不是组件需要的
  • 使用context,context相当于一个大容器,可以把要通信的内容放在这个容器中,这样不管嵌套多深,都可以随意取用,对于跨越多层的全局数据可以使用context来实现

1.3 非嵌套关系组件

  • 可以通过自定义事件通信(事件总线)
  • keyitsgo redux等进行全局的状态管理
  • 如果是兄弟组件通信,可以找到这两个兄弟共同的父节点,结合父子节点通信的方式进行通信