如何在没有arg的情况下从子prop中调用父函数

时间:2016-10-16 18:54:25

标签: reactjs

我没有找this method,因为我不会传递任何arg。

我需要调用父函数,不带传入任何参数。

家长(es6):

foo(){
  ...
  console.log("i was called");
}

<Child callFoo={this.foo} />

儿童(es6):

// otherFunc() will be called by an onClick button event
otherFunc(){
 ...

 this.props.callFoo;
}

以上不起作用。这有效,但我不需要这样做:

家长(es6):

foo(bool){
  ...
  if (bool){
    console.log("i was called");
  }
}

<Child callFoo={this.foo} />

儿童(es6):

// otherFunc() will be called by an onClick button event
otherFunc(){
 ...

 this.props.callFoo(true);
}

有没有办法通过this.props.callFoo简单地调用函数?

1 个答案:

答案 0 :(得分:5)

您不需要传递布尔值,但您必须使用括号来执行callFoo函数。这是你的例子:

class Parent extends React.Component {
  foo() {
    console.log('i was called');
  }
  render() {
    return(
      <Child callFoo={this.foo}/>
    );
  }
}

class Child extends React.Component {
  otherFunc() {
    this.props.callFoo();
  }
  render() {
    return(
      <div onClick={this.otherFunc.bind(this)}>Child</div>
    );
  }

}

React.render(<Parent/>, document.getElementById('View'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react-with-addons.min.js"></script>
<div id="View"></div>