开发者社区> 问答> 正文

React组件通信如何实现?

展开
收起
前端问答 2019-12-01 22:24:51 705 0
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    React组件间通信⽅式:

    • ⽗组件向⼦组件通讯: ⽗组件可以向⼦组件通过传props的⽅式,向⼦组件进⾏通讯
    • ⼦组件向⽗组件通讯: props+回调的⽅式,⽗组件向⼦组件传递props进⾏通讯,此props为作⽤域为⽗组件⾃身的函数,⼦组件调⽤该函数,将⼦组件想要传递的信息,作为参数,传递到⽗组件的作⽤域中
    • 兄弟组件通信: 找到这两个兄弟节点共同的⽗节点,结合上⾯两种⽅式由⽗节点转发信息进⾏通信
    • 跨层级通信:Context设计⽬的是为了共享那些对于⼀个组件树⽽⾔是“全局”的数据,例如当前认证的⽤户、主题或⾸选语⾔,对于跨越多层的全局数据通过 Context通信再适合不过
    如果你使用 16.3 以上版本的话,对于这种情况可以使用 Context API。
    
    // 创建 Context,可以在开始就传入值
    const StateContext = React.createContext()
    class Parent extends React.Component {
      render () {
        return (
          // value 就是传入 Context 中的值
          <StateContext.Provider value='yck'>
            <Child />
          </StateContext.Provider>
        )
      }
    }
    class Child extends React.Component {
      render () {
        return (
          <ThemeContext.Consumer>
            // 取出值
            {context => (
              name is { context }
            )}
          </ThemeContext.Consumer>
        );
      }
    }
    
    
    • 发布订阅模式: 发布者发布事件,订阅者监听事件并做出反应,我们可以通过引⼊event模块进⾏通信
    • 全局状态管理⼯具: 借助Redux或者Mobx等全局状态管理⼯具进⾏通信,这种⼯具会维护⼀个全局状态中⼼Store,并根据不同的事件产⽣新的状态
    2019-12-01 22:52:49
    赞同 1 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
利用编译将 Vue 组件转成 React 组件 立即下载
React Native 全量化实践 立即下载
React在大型后台管理项目中的工程实践 立即下载