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与Prototype并存的冲突的解决方法
Aug 29 Javascript
事件模型在各浏览器中存在差异
Oct 20 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
jQuery通过Ajax返回JSON数据
Apr 28 Javascript
浅析JavaScript中的对象类型Object
May 26 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
JQuery实现图片轮播效果
May 08 jQuery
vue轮播图插件vue-awesome-swiper
Nov 27 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
微信小程序实现tab左右切换效果
Nov 15 Javascript
vue项目中实现的微信分享功能示例
Jan 21 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语法速查表
2007/01/02 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
php跨站攻击实例分析
2014/10/28 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
2011/06/28 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
js检测浏览器版本、核心、是否移动端示例
2014/04/24 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
js仿苹果iwatch外观的计时器代码分享
2015/08/26 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
python3生成随机数实例
2014/10/20 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
pandas.cut具体使用总结
2019/06/24 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
使用matplotlib动态刷新指定曲线实例
2020/04/23 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
Python3读写ini配置文件的示例
2020/11/06 Python
python简单实现插入排序实例代码
2020/12/16 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
演讲稿怎么写才完美
2014/01/02 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers