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 相关文章推荐
强制设为首页代码
Jun 19 Javascript
jQuery中append()方法用法实例
Jan 08 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
Mar 03 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
微信小程序中用WebStorm使用LESS
Mar 08 Javascript
十个免费的web前端开发工具详细整理
Sep 18 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
Vue实现一个无限加载列表功能
Nov 13 Javascript
JavaScript页面倒计时功能完整示例
May 15 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
使用js和canvas实现时钟效果
Sep 08 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 Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
php接口隔离原则实例分析
2019/11/11 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
js使用递归解析xml
2014/12/12 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
学习使用jQuery表单验证插件和日历插件
2017/02/13 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Python中的getopt函数使用详解
2015/07/28 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
使用Python封装excel操作指南
2021/01/29 Python
思想品德自我鉴定
2013/10/12 职场文书
食品安全宣传标语
2014/06/07 职场文书
员工离职通知函
2015/04/25 职场文书
杨善洲电影观后感
2015/06/04 职场文书
机器人总动员观后感
2015/06/09 职场文书
蜗居观后感
2015/06/11 职场文书
公司保密管理制度
2015/08/04 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers