组件之间通信一共有几种方式:
1. 父组件向子组件通信
1) 在父组件中定义状态
2) 在子组件标签上放置自定义属性(自动生成props对象)
3) 在类组件中通过this获取props对象(props对象是固定的)
4) 在函数组件中通过形参获取属性,形参可以自定义(推荐使用props)
注意:
1) props是只读对象(readonly)
根据单项数据流的要求,子组件只能获取props,不可以修改props
2)props是可以传任何值
2. 子组件向父组件通信
父组件提供回调函数,通过 props 传递给子组件
子组件触发父组件传递的回调函数传递数据给父组件
父组件数据更新后,传递给子组件的数据自动更新
3. 兄弟之间通信
核心:通过状态提升机制 ,利用共同的父组件进行传递
需要通讯的组件通过 props 接收状态和函数
4. 祖先后代通信
使用createContext()创建一个上下文对象
使用 Provider 包裹组件,value 属性注入状态,函数,被包裹组件下的任何组件可以使用。
使用 Consumer 消费 Provider 提供的数据和函数,语法{ value => 使用数据和函数 }