React 组件间通信
2015-06-04 21:23
525 查看
https://jsfiddle.net/69z2wepo/9719/
参考
Thinking in React
https://facebook.github.io/react/docs/thinking-in-react.html
<script src="https://facebook.github.io/react/js/jsfiddle-integration.js"></script> <div id="container"> <!-- This element's contents will be replaced with your component. --> </div> <hr/> <div id="container1"> <!-- This element's contents will be replaced with your component. --> </div> <hr/> <!--在容器页面中操作Foo的方法--> <div onclick="clickSpan()" style="border:#CCCCCC 1px solid">click me to change Foo's age to 20 from container page</div>
var Foo=React.createClass({ //setGender是部件Foo向外公开的一个方法,用于操作Foo的gender值 setAge:function(age){ var stateVal={}; if(age>20) { stateVal={gender:'male',age:age} } else { stateVal={gender:'femle',age:age} } this.setState(stateVal); }, getInitialState:function(){ return { age:0, gender:'female' } }, render:function(){ return <div> <div> <strong>{this.props.componentName}</strong> </div> <div> gender:<input value={this.state.gender} type="text" ref="txt" /> </div> <div> age:{this.state.age} </div> </div> } }); var Bar = React.createClass({ onAgeChange:null, render: function() { return <div> <div onClick={this.helloClick}> <strong>{this.props.componentName}</strong>(click me to show age value) </div> <div> age:<input onChange={this.onChange} type="text" ref="age" /> </div> <div> age:{this.state.age} </div> </div>; }, helloClick:function(){ alert(this.refs.age.getDOMNode().value); }, onChange:function(e){ if(this.onAgeChange) this.onAgeChange(e.target.value); this.state.age=e.target.value; this.setState({age: e.target.value}); //this.forceUpdate(); }, getInitialState:function(){ return { age:0 } }, componentDidMount:function(){ this.refs.age.getDOMNode().value=this.state.age; } }); var foo=React.render(<Foo componentName="Foo"/>, document.getElementById('container')); var bar=React.render(<Bar componentName="Bar" />, document.getElementById('container1')); bar.onAgeChange=function(age){ foo.setAge(age); } function clickSpan(){ // 在容器页面中操作Foo的方法 foo.setAge(22); }
参考
Thinking in React
https://facebook.github.io/react/docs/thinking-in-react.html
相关文章推荐
- 使用ReactiveCocoa限制UITextField只能输入正确的金额
- React Native
- React 入门实例教程
- ReactJS读书笔记三:组件的组合和通信
- 【Facebook的UI开发框架React入门之一】简介-goodmao
- 用react的思维考虑网页用户登陆的逻辑
- ReactJS读书笔记二:组件生命周期
- ReactiveCocoa配置相关
- ReactiveCocoa - iOS开发的新框架
- React 入门实例教程
- 两分钟了解REACTIVEX
- React直出实现与原理
- 两种高效的服务器设计模型:Reactor和Proactor模型
- react及flux架构范例Todomvc分析
- react-webpack 学习笔记~~第一步~环境
- ReactiveCocoa框架菜鸟入门(四)——信号(Signal)详解
- Netty那点事(四)Netty与Reactor模式
- Functional Reactive Programming<1>
- SaltStack的Reactor System
- ReactiveCocoa框架菜鸟入门(三)——信号(Signal)与订阅者(Subscriber)