React - 在子组件中调用父方法

use*_*628 20 javascript reactjs

我有一个父和子组件,我想在子组件中调用父方法,如下所示:

import Parent from './parent.js';
class Child extends React.Component {
    constructor(props) {
        super(props);
        };

    click() {
        Parent.someMethod();
    }

    render() {
          <div>Hello Child onClick={this.click}</>
    }
}

class Parent extends React.Component {
    constructor(props) {
        super(props);
        };

    someMethod() {
        console.log('bar');
    }

    render() {
          <div>Hello Parent</>
    }
}
Run Code Online (Sandbox Code Playgroud)

这会返回一条错误消息:

Uncaught TypeError: _Parent2.default.someMethod is not a function

如何在子组件中调用此父方法?

Mar*_*son 40

试试这个.将函数作为props传递给子组件.

import Parent from './parent.js';
class Child extends React.Component {
    constructor(props) {
        super(props);
        };

    click = () => {
        this.props.parentMethod();
    }

    render() {
          <div onClick={this.click}>Hello Child</div>
    }
}

class Parent extends React.Component {
    constructor(props) {
        super(props);
        };

    someMethod() {
        console.log('bar');
    }

    render() {
          <Child parentMethod={this.someMethod}>Hello Parent, {this.props.children}</Child>
    }
}
Run Code Online (Sandbox Code Playgroud)