v16.3.0 开始,React 开始提供官方的 context 接口;在此之前,为了管理复杂的数据、状态,我们已经有了很多套路,比如:redux、mobx,等,这次有了官方的数据管理方式,相信会有更好的体验和更多的可能性


    1. const { Provider: P1, Consumer: C1 } = React.createContext('em, i am a p1');
    2. const { Provider: P2, Consumer: C2 } = React.createContext('em, i am a p2');
    3. class App extends React.Component {
    4. render() {
    5. return (
    6. <div>
    7. <P1 value={'i am a p1'}>
    8. <C1>{value => <li>{value}</li>}</C1>
    9. <C1>{value => <li>{value}</li>}</C1>
    10. </P1>
    11. <P1 value={'i am another p1'}>
    12. <C1>{value => <li>{value}</li>}</C1>
    13. </P1>
    14. <P2 value={'i am a p2'}>
    15. <C1>{value => <li>{value}</li>}</C1>
    16. </P2>
    17. </div>
    18. )
    19. }
    20. }
    21. ReactDOM.render(<App />, document.querySelector("#app"))

    代码栗子中,我创建了 2 对 Provider 和 Consumer 对(P1 与 C1, P2 与 C2)
    C1 类型的节点会沿着 tree 向上搜索至 P1 类型的节点,并获取其 value;C2 则搜索 P2
    执行结果如下图所示:
    一个 React 新接口 context 的小栗子 - 图1

    对应于官网中这一段描述:
    一个 React 新接口 context 的小栗子 - 图2