react 兄弟组件如何调用对方的方法示例


Posted in Javascript onOctober 23, 2018

最近有一个场景是Child2组件点击让Child1组件里面的state的值发生改变,Child1是一个公用组件,把里面的state值改为props传递,修改内容太多,容易出错,就想找其他的方法来解决兄弟组件调用方法问题,下面看代码:

Child1 是第一个子组件

class Child1 extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
   text:'Child1'
  };
 }
 onChange=()=>{
  this.setState({
   text:'Child1 onChange'
  })
 }
 componentDidMount(){
  this.props.onRef&&this.props.onRef(this)
 }

 render() {
  return (
   <div>{this.state.text}</div>
  );
 }
}

是第二个子组件,和Child1是兄弟组件;

class Child2 extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  };
 }

 render() {
  return (
   <div onClick={this.props.onClick}>Child2</div>
  );
 }
}

home 父组件

class Home extends React.Component {

 constructor(props) {
  super(props);
  this.state = {
  };
 }
 onRef=(ref)=>{
  this.child1=ref;
 }

 render() {
  return (
   <div className="home">
    <Child1 onRef={this.onRef}/>
    <Child2 onClick={
     ()=>{
      this.child1.onChange&&this.child1.onChange()
     }
    } />
    </div>
  );
 }
}

分析

  • 第一步:在Child1组件的componentDidMount生命周期里面加上this.props.onRef(this),把Child1都传递给父组件,
  • 第二步父组件里面 <Child1 onRef={this.onRef}/> this.onRef方法为onRef=(ref)=>{this.child1=ref;};
  • 第三步 Child2组件触发一个事件的时候,就可以直接这样调用this.child1.onChange(),Child1组件里面就会直接调用onChange函数,修改text为Child1 onChange;

到这里就可以实现调用兄弟组件,其实还是用父组件做了中间传递。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
apycom出品的jQuery精美菜单破解方法
Feb 18 Javascript
js 幻灯片的实现
Dec 06 Javascript
调用jQuery滑出效果时闪烁的解决方法
Mar 27 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
Dec 22 Javascript
关于JavaScript中事件绑定的方法总结
Oct 26 Javascript
jQuery validate插件功能与用法详解
Dec 15 Javascript
原生js实现商品放大镜效果
Jan 12 Javascript
基于JavaScript实现拖动滑块效果
Feb 16 Javascript
详解用webpack2搭建angular2的项目
Jun 22 Javascript
bootstrap modal+gridview实现弹出框效果
Aug 15 Javascript
vue.js实现三级菜单效果
Oct 19 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
详解React 的几种条件渲染以及选择
Oct 23 #Javascript
详解create-react-app 2.0版本如何启用装饰器语法
Oct 23 #Javascript
彻底弄懂 JavaScript 执行机制
Oct 23 #Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 #Javascript
浅谈JavaScript 代码整洁之道
Oct 23 #Javascript
使用jquery Ajax实现上传附件功能
Oct 23 #jQuery
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 #Javascript
You might like
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php使用ereg验证文件上传的方法
2014/12/16 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
javascript add event remove event
2008/04/07 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
node.js操作mongodb学习小结
2015/04/25 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
js面向对象编程总结
2017/02/16 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
函授毕业生自我鉴定范文
2014/03/25 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
2014年标准化工作总结
2014/12/17 职场文书
先进个人评语大全
2015/01/04 职场文书
商超业务员岗位职责
2015/02/13 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
离职告别感言
2015/08/04 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python