从 v16.3.0 开始,React 开始提供官方的 context 接口;在此之前,为了管理复杂的数据、状态,我们已经有了很多套路,比如:redux、mobx,等,这次有了官方的数据管理方式,相信会有更好的体验和更多的可能性
const { Provider: P1, Consumer: C1 } = React.createContext('em, i am a p1');const { Provider: P2, Consumer: C2 } = React.createContext('em, i am a p2');class App extends React.Component {render() {return (<div><P1 value={'i am a p1'}><C1>{value => <li>{value}</li>}</C1><C1>{value => <li>{value}</li>}</C1></P1><P1 value={'i am another p1'}><C1>{value => <li>{value}</li>}</C1></P1><P2 value={'i am a p2'}><C1>{value => <li>{value}</li>}</C1></P2></div>)}}ReactDOM.render(<App />, document.querySelector("#app"))
代码栗子中,我创建了 2 对 Provider 和 Consumer 对(P1 与 C1, P2 与 C2)
C1 类型的节点会沿着 tree 向上搜索至 P1 类型的节点,并获取其 value;C2 则搜索 P2
执行结果如下图所示:
对应于官网中这一段描述:
