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)