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 相关文章推荐
JQuery 常用方法基础教程
Feb 06 Javascript
Script的加载方法小结
Jan 12 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
Oct 18 Javascript
JS两种定义方式的区别、内部原理
Nov 21 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
Apr 18 Javascript
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
防止Layui form表单重复提交的实现方法
Sep 10 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技术开发客服工单系统
2016/01/06 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
详解js的六大数据类型
2016/12/27 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Django Admin实现上传图片校验功能
2016/03/06 Python
python小程序实现刷票功能详解
2019/07/17 Python
python扫描线填充算法详解
2020/02/19 Python
Python request使用方法及问题总结
2020/04/26 Python
python3实现飞机大战
2020/11/29 Python
CSS3动画特效在活动页中的应用
2020/01/21 HTML / CSS
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
个人评价范文分享
2014/01/11 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
罗马假日观后感
2015/06/08 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python
ES6 解构赋值的原理及运用
2021/05/25 Javascript