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 html动态生成select标签出问题的解决方法
Nov 20 Javascript
JS控制图片等比例缩放的示例代码
Dec 24 Javascript
JavaScript中数组slice和splice的对比小结
Sep 22 Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
vue基础之v-bind属性、class和style用法分析
Mar 11 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
JavaScript多种页面刷新方法小结
Apr 04 Javascript
微信小程序收货地址API兼容低版本解决方法
May 18 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
Feb 19 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 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中Date获取时间不正确怎么办
2008/06/05 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
jquery 插件开发备注
2010/08/27 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
AngularJS 自定义过滤器详解及实例代码
2016/09/14 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
Vue自定义指令详解
2017/07/28 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
2018/03/05 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
Cython 三分钟入门教程
2009/09/17 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python实现的购物车功能示例
2018/02/11 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
python监控进程状态,记录重启时间及进程号的实例
2019/07/15 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
英语专业学生个人求职信范文
2014/01/06 职场文书
ktv筹备计划书
2014/05/03 职场文书
市场营销工作计划书
2014/05/06 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
2015年财政所工作总结
2015/04/25 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS