React-从“同级”组件调用函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React-从“同级”组件调用函数相关的知识,希望对你有一定的参考价值。

这是我当前的模型,请检查一下,PLZ

import component 1 & 2 

export default class App extends Component {  
  render() {    
    return (

        <Component1/>       
        <Component2/>

    );
  }
}

在组件1中,我有一个函数:运行此函数后,我想在组件2上使用fetchData()执行下一个操作,但是我找不到从1引用2的方法,因为它们不是亲子?!

答案

一旦执行第一个函数,您必须将回调传递给父对象,然后将prop传递给第二个组件以通知它。

import React from "react";

class Component1 extends React.Component {
  componentDidMount() {
    if (this.props.onPushData) {
      // execute your first function here
      this.props.onPushData();
    }
  }

  render() {
    return <p>Component1</p>;
  }
}

class Component2 extends React.Component {
  componentDidUpdate(prevProps, prevState) {
    if (prevProps.dataPushed !== this.props.dataPushed) {
      if (this.props.dataPushed) {
        // execute your second function here
      }
    }
  }

  render() {
    return <p>Component2</p>;
  }
}

export default class extends React.Component {
  state = {
    dataPushed: false
  }

  handleDataPush = () => {
    this.setState({ dataPushed: true })
  }

  render() {
    return (
      <div>
        <Component1 onPushData={this.handleDataPush} />
        <Component2 dataPushed={this.state.dataPushed} />
      </div>
    );
  }
}

以上是关于React-从“同级”组件调用函数的主要内容,如果未能解决你的问题,请参考以下文章

React 函数组件与class组件的区别

从 JS 函数调用 React 组件函数

从 React.js 中的另一个类组件调用函数

React.js:将道具从函数传递到组件

Reactreact概述组件事件

从 React 组件调用功能组件中的函数