react 兄弟组件如何调用对方的方法示例

最近有一个场景是Child2组件点击让Child1组件里面的state的值发生改变,Child1是一个公用组件,把里面的state值改为props传递,修改内容太多,容易出错,就想找其他的方法来解决兄弟组件调用方法问题,下面看代码:

Child1 是第一个子组件

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

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是兄弟组件;

?


1

2

3

4

5

6

7

8

9

10

11

12

13

class Child2 extends React.Component {

 constructor(props) {

  super(props);

  this.state = {

  };

 }

 render() {

  return (

   <div onClick={this.props.onClick}>Child2</div>

  );

 }

}

home 父组件

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

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;

到这里就可以实现调用兄弟组件,其实还是用父组件做了中间传递。

     
利用seajs实现前端模块化开发提示框项目实战
利用requirejs实现前端模块化开发hao123项目实战
FIS3一个强大的前端工程构建工具的初级超级实用功能讲解视频教程
用Gulp构建你的前端项目_前端工程化工具--gulp视频教程
开启大数据时代最后一公里-精通D3.js 交互式数据可视化高级编程视频   ...2
开启大数据时代最后一公里-精通Highchars大数据可视化视频教程
AngularJS仿拉勾网WebApp 开发移动端单页应用
Angular 4.0从入门到实战 打造在线竞拍网站
Vue2.0+Node.js+MongoDB全栈打造商城系统
nodejs入门到精通(基础就业)全套   ...2
ES6零基础教学解析彩票项目 
极客学院ReactJS系列视频教程 
北风网ExtJS培训视频教程 ExtJS基础课程+ExtJS项目实战(两套)
HTML5游戏开发案例教程合集
WEB前端开发第二期面试视频
智能社vue.js精讲视频教程 
Vue.js高仿饿了么外卖App 最火前端框架
飞速上手的跨平台App开发
组件方式开发 Web App全站
所向披靡的响应式开发

下一页 ?

原文地址:https://www.cnblogs.com/xanthedsf/p/10163949.html

时间: 2024-08-30 07:16:59

react 兄弟组件如何调用对方的方法示例的相关文章

怎么在Fragment的布局文件中的组件onclik调用Fragment的方法?

============问题描述============ xml文件:[color=#FF0000][/color] <Button android:id="@+id/btn_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4dp" android:layout_m

React父组件调用子组件

通点击父组件按钮调用子组件的方法 父组件: import React, {Component} from 'react'; import ChildComponent from './child'; export default class ParentComponent extends Component { render() { return( <div> <ChildComponent onRefChild={this.onRefChild} /> <button on

创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值

1.创建组件的方法   函数组件   class组件 1.1 函数组 无状态函数式组件形式上表现为一个只带有一个 `render()` 方法的组件类,通过函数形式或者 `ES6` 箭头 `function`的形式在创建,并且该组件是无state状态的.具体的创建形式如下 1 import React from 'react '; 2 3 //定义一个React组件 4 function App() { 5 return ( 6 <div> 7 hello React... 8 </div

react截图组件react-cropper的使用方法

在使用React开发中我们经常会遇到上传图片的情况,如果要使的上传的图片符合一定的规格,那么便要在客户端对上传的图片进行一定的裁剪,这个时候我么便可以使用到 react-cropper这个图片裁剪组件,可以帮助我们轻松的实现图片裁剪功能.使用步骤如下: 安装: npm install --save-dev react-cropper 使用方法如下: import React from 'react' import Cropper from 'react-cropper' import 'crop

React 借助pubsub-js进行兄弟组件的传递值

1===> raect中两个 兄弟组件 互相通信使用的技术 使用 消息订阅(subscribe)和发布(publish)机制 s儿 伯 s rai b p? b l? ? 有一个库可以处理 PubSubJS 它是第三方插件 1)下载 cnpm install pubsub-js -S 我的版本 "pubsub-js": "^1.7.0", 2) 在需要使用的组件中引入 import PubSub from "pubsub-js" // id

react native组件通信

在日常开发过程中,组件之间的通信我们应该经常用到,也是我们开发过程中不可或缺的一部分.组件可以分为父子组件以及兄弟组件,下面就不同组件之间的通信进行说明. 父组件通过props与子组件通信 定义父组件 import React, {Component} from 'react'; import { Text, StyleSheet, View, TouchableOpacity } from 'react-native'; import Child from "./Child"; ex

浅谈react受控组件与非受控组件

最近在使用蚂蚁金服出品的一条基于react的ant-design UI组件时遇到一个问题,编辑页面时input输入框会展示保存前的数据,但是是用defaultValue就是不起作用,输入框始终为空值而不是具体的传入的值.具体编辑页面中文本框相关的代码如下:         ... //render方法上面的内容省略  <FormItem       label="问题描述:"       hasFeedback      {...props.formItemLayout}  &g

Android React Native组件的生命周期及回调函数

熟悉android的童鞋应该都清楚,android是有生命周期的,其很多组件也是有生命周期.今天小编和大家分享的React Native组件的生命周期,还不了解的童鞋,赶紧来围观吧 在android开发中,React Native组件的生命周期,大致分为三个阶段,分别是: 1.组件第一次绘制阶段,这个阶段主要是组件的加载和初始化: 2.组件在运行和交互阶段,这个阶段组件可以处理用户交互,或者接收事件更新界面: 3.组件卸载消亡的阶段,这个阶段主要是组件的清理工作. 在Android React

React Native组件生命周期

概述 所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解空间的生命周期,是开发中必须掌握的一个知识点.就像 Android 开发中组件 一样,React Native的组件也有生命周期(Lifecycle). React Native组件的生命周期大致上可以划分为实例化阶段.存在阶段和销毁阶段.我们只有在理解组件生命周期的基础上,才能开发出高性能的app. React Native中组件的生命周期大致可以用以下图表示: 如图: 第一阶段:是组件第一次绘制阶段,如图中的上面虚线框内,