-
父组件向子组件通讯:父组件可以向子组件通过props的方式,向子组件进行通讯
-
子组件向父组件通讯:props+回调方式,父组件向子组件传递props进行通讯,此props为作用域为父组件自身的函数,子组件调用该函数,将子组件想要传递的信息,作为参数,传递到父组件的作用域中
-
兄弟组件通信:找到这两个兄弟节点的共同父节点,结合上面2种方式由父节点转发信息进行通信
-
发布订阅模式:发布者发布事件,订阅者监听事件并做出反应,可以引入event模块进行通信
import PubSub from 'pubsub-js'
PubSub.publish('query', data)
PubSub.subscribe('query', (_, data) => {
console.info(data)
})
-
跨层级通信:Context设计目的目的是为了共享那些对于一个组件树而言是“全局”的数据,例如当前认证用户信、主题或首选语言
const XxContext = React.createContext()
<XxContext.Provider value={data}>
子组件
</XxContext.Provider>
static contextType = XcContext
this.context
<XxContent.Consumer>
{value => {}}
</XxContent.Consumer>
const {name} = useContext(XxContext)
-
全局状态管理工具:借助Redux或Mobx等全局状态管理工具进行通信,这种工具会维护一个全局状态中心store,并根据不同的事件产生新的状态