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 相关文章推荐
javascript new一个对象的实质
Jan 07 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
jQuery LigerUI 使用教程表格篇(1)
Jan 18 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
JS控件的生命周期介绍
Oct 22 Javascript
jquery实现输入框动态增减的实例代码
Jul 14 Javascript
Jquery实现自定义tooltip示例代码
Feb 12 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
jquery结合html实现中英文页面切换
Nov 29 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 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/06/24 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
基于JQuery的cookie插件
2010/04/07 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
js实现div色块拖动录制
2020/01/16 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
python使用cookielib库示例分享
2014/03/03 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
使用requests库制作Python爬虫
2018/03/25 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
意大利男装网店:Vrients
2019/05/02 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
网络编辑职责
2014/03/01 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
学生安全责任书范本
2014/07/24 职场文书
感谢信模板大全
2015/01/23 职场文书
六一儿童节致辞
2015/07/31 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
详解jQuery的核心函数和事件处理
2022/02/18 jQuery