36.组件通信的方式有哪些?
- 父子组件通信
- 跨层级之间的通信
- 没有任何逻辑关系的通信
1. 方案
1.1 父子组件通信
- 父组件像子组件通信:父组件通过props像子组件传递需要的信息
- 子组件向父组件通信:props+回调的函数
1.2 跨层级的通信
- 使用props,利用中间组件层层传递,但是如果父组件层级结构较深,那么中间每一次都要去传递props,增加了复杂度,并且这些props还并不是组件需要的
- 使用context,context相当于一个大容器,可以把要通信的内容放在这个容器中,这样不管嵌套多深,都可以随意取用,对于跨越多层的全局数据可以使用context来实现
1.3 非嵌套关系组件
- 可以通过自定义事件通信(事件总线)
- keyitsgo redux等进行全局的状态管理
- 如果是兄弟组件通信,可以找到这两个兄弟共同的父节点,结合父子节点通信的方式进行通信