使用 Context 的原因
为了有时候想传递数据通过组件树,但是不想给每一层级的组件手动传递属性,那么 context 就能帮你 “越级” 传递数据到组件树中你想传递到的深层次组件。
有时候 A组件 为了给 B组件 中的 C组件 传递一个 prop ,而需要把参数在组件中传递两次才能最终将 A组件 中的 prop 传递给 C组件 。
官方文档的示例代码如下
1 | var Button = React.createClass({ |
使用 context 改进数据传递
现在我们使用 context 来完成参数的传递试试
1 | var Button = React.createClass({ |
示例代码中通过添加 childContextTypes 和getChildContext() 到 MessageList ( context 的提供者),React 自动向下传递数据然后在组件树中的任意组件(也就是说任意子组件,在此示例代码中也就是 Button )都能通过定义 contextTypes 访问 context 中的数据。
总结
- 指定数据并要将数据传递下去的父组件要定义 childContextTypes 和 **getChildContext()**;
- 想要接收到数据的子组件 必须定义 contextTypes 来使用传递过来的 context 。