React 中 context 的使用
来源:互联网 发布:淘宝息肌丸有效吗 编辑:程序博客网 时间:2024/06/05 18:29
【引自ZAZ个人博客 [走啊走的记录] - React 中 context 的使用】
官方文档说明(英)
看了别人写的中文博客,再看了官方英文文档,发现还是官方文档讲的浅显易懂一些,看了之后,半翻译半理解地写了这篇博客,更易于新手理解。
介绍
context 是在 react @ 0.14 版本以后发布的一个高级且实验性的功能,有可能在未来做出更改。不推荐频繁使用,如果使用的话尽量保持在小范围内并且避免直接使用 context 的 API,为了以后升级框架更加容易。
使用 Context 的原因
为了有时候想传递数据通过组件树,但是不想给每一层级的组件手动传递属性,那么 context 就能帮你 “越级” 传递数据到组件树中你想传递到的深层次组件。
有时候 A组件 为了给 B组件 中的 C组件 传递一个 prop ,而需要把参数在组件中传递两次才能最终将 A组件 中的 prop 传递给 C组件。
官方文档的示例代码如下
var Button = React.createClass({ render: function() { return ( <button style={{background: this.props.color}}> {this.props.children} </button> ); }});var Message = React.createClass({ render: function() { return ( <div> {this.props.text} <Button color={this.props.color}>Delete</Button> </div> ); }});var MessageList = React.createClass({ render: function() { var color = "purple"; var children = this.props.messages.map(function(message) { return <Message text={message.text} color={color} />; }); return <div>{children}</div>; }});
使用 context 改进数据传递
现在我们使用 context 来完成参数的传递试试
var Button = React.createClass({ // 必须指定context的数据类型 contextTypes: { color: React.PropTypes.string }, render: function() { return ( <button style={{background: this.context.color}}> {this.props.children} </button> ); }});var Message = React.createClass({ render: function() { return ( <div> {this.props.text} <Button>Delete</Button> </div> ); }});var MessageList = React.createClass({ // childContextTypes: { color: React.PropTypes.string }, getChildContext: function() { return {color: "purple"}; }, render: function() { var children = this.props.messages.map(function(message) { return <Message text={message.text} />; }); return <div>{children}</div>; }});
示例代码中通过添加 childContextTypes 和 getChildContext() 到 MessageList (context 的提供者),React 自动向下传递数据然后在组件树中的任意组件(也就是说任意子组件,在此示例代码中也就是 Button)都能通过定义 contextTypes 访问 context 中的数据。
总结
指定数据并要将数据传递下去的父组件要定义 childContextTypes 和 getChildContext();想要接收到数据的子组件 必须定义 contextTypes 来使用传递过来的 context。
- React 中 context 的使用
- react中context学习
- 教你如何优雅的使用React的context属性
- android中context的使用
- Android中Context的使用
- react中react-redux和react-router4.*的配合使用
- React 中style的使用
- React中Ref的使用
- React中Mixin的使用
- React之使用context传递数据
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Context类中openFileOutput ()函数的使用
- Android 中 Context 的理解及使用
- 帮助小明翻译他的编程语言
- 献给所有因互联网金融被骗和即将被骗的人们
- HDU 5113 Black And White 两种搜索策略(dfs+剪纸)
- 垃圾回收
- 控制反转和依赖注入(IOC/DI)
- React 中 context 的使用
- odroid Windows 烧写步骤
- RANSAC算法讲解
- ionic自定义图标心得分享
- HDU - 1398 Square Coins(母函数)
- Redis方案
- silverlight 窗口跳转 全屏
- java 注解开发-1
- mybatis-generator:自我感觉不错的模板