https://jsfiddle.net/69z2wepo/9719/

<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

React 组件间通信的更多相关文章

  1. React 组件间通信介绍

    React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍:   父组件向子 ...

  2. vue 和 react 组件间通信方法对比

    vue 和 react 组件间通信方法对比: 通信路径 vue的方法 react的方法 父组件 => 子组件 props(推荐).slot(推荐).this.$refs.this.$childr ...

  3. React组件间通信-sub/pub机制

    React生命周期第二个demo演示了兄弟组件的通信,需要通过父组件,比较麻烦:下面介绍sub/pub机制来事项组件间通信. 1.导包 npm i pubsub-js 2.UserSearch.jsx ...

  4. React 组件间通信 总结

    组件间通信 5.1.1. 方式一: 通过props传递 1)         共同的数据放在父组件上, 特有的数据放在自己组件内部(state) 2)         通过props可以传递一般数据和 ...

  5. React组件间通信

    众所周知,ReactJS组件与组件之间的通信是一个难点.在React实际开发中,父子组件之间的传值是比较常见的,刚入门的小伙伴很容易被组件之间的通信绕懵. 今天花了点时间总结了一下React父子组件之 ...

  6. react 组件间通信,父子间通信

    一.父组件传值给子组件 父组件向下传值是使用了props属性,在父组件定义的子组件上定义传给子组件的名字和值,然后在子组件通过this.props.xxx调用就可以了. 二.子组件传值给父组件 子组件 ...

  7. React独立组件间通信联动

    React是现在主流的高效的前端框架,其官方文档 http://reactjs.cn/react/docs/getting-started.html 在介绍组件间通信时只给出了父子组件间通信的方法,而 ...

  8. React 精要面试题讲解(二) 组件间通信详解

    单向数据流与组件间通信 上文我们已经讲述过,react 单向数据流的原理和简单模拟实现.结合上文中的代码,我们来进行这节面试题的讲解: react中的组件间通信. 那么,首先我们把看上文中的原生js代 ...

  9. [转] React 中组件间通信的几种方式

    在使用 React 的过程中,不可避免的需要组件间进行消息传递(通信),组件间通信大体有下面几种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面依次说下这几种通 ...

随机推荐

  1. 021.1 IO流——File类

    ########################################IO流:    IO:用于处理设备上的数据的技术.设备:内存,硬盘,光盘    流:系统资源,Windows系统本身就可 ...

  2. shouldRasterize 光栅化、(缓存)复用、内存、内容稳定

    使用场景:稳定的视图(layer)被反复使用或进行动画: 本质:牺牲内存解放cpu: 反例:牺牲内存牺牲cpu. 单次使用或者视图有变动,shouldRasterize不会有任何用途,反而会牺牲内存. ...

  3. 【YY的GCD】

    设 \[f(n)=\sum_{i=1}^N\sum_{j=1}^M[(i,j)=n]\] 我们的答案显然是 \[ans=\sum_{p\in prime}f(p)\] 设 \[F(n)=\sum_{i ...

  4. python3 安装win32api

    Python3 中先安装pip install pywin32 但是在调用时任然说找不到该模块,于是查找资料后得出需要使用python -m pip install pypiwin32.

  5. css注入获取网页中的数据

    <style><?php echo htmlspecialchars($_GET['x']);?></style> <br><br>< ...

  6. RedHat(小红帽)下 yum用不了的解决办法

    由于RedHat是商业版的,通常由于没有注册,导致yum程序无法使用(linux下面,yum是个安装软件的“神器”).此时可用CentOS的地址进行替换.下面将一步步说明如何处理: 一.删除RedHa ...

  7. [转载]WebDriver工作原理

    转载自:https://www.cnblogs.com/testermark/p/3546287.html WebDriver的工作原理:  在我们new一个WebDriver的过程中,Seleniu ...

  8. Android 面试题之编程

    1.排序 package cn.java.suanfa; public class SuanFa { public static void main(String[] args) { int[] ar ...

  9. 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性

    可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...

  10. Go语言之旅:基本类型

    原文地址:https://learn-linux.readthedocs.io 欢迎关注我们的公众号:小菜学编程 (coding-fan) Go 内置了以下基本类型: 布尔 bool 字符串 stri ...