如何从父列表视图中调用子组件中的函数

时间:2017-05-23 06:37:54

标签: react-native

我从(父组件)listView:

导航
rowPressed(element) {
    this.props.navigator.push({
           title: element.title,
           rightButtonSystemIcon: 'action',
    onRightButtonPress: () => {
      // how to call my function _handleRightButtonPress() ?
    },
           component: ElementDetail,
           passProps: {
             element: element
           }
       });
  }

我想在ElementDetail组件上调用_handleRightButtonPress():

class ElementDetail extends Component {

  constructor(props) {
    super(props);
    ...
  }

  _handleRightButtonPress() {
    console.log('right Button Pressed');
  };

...

}

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

最简单的方法是让父母将一个功能传递给孩子。孩子可以使用该功能与其父母进行交流。

父母会将一个函数作为道具传递给孩子,如下所示:

<MyChild myFunc={this.handleChildFunc.bind(this)} />

孩子会这样称呼这个函数:

this.props.myFunc();
And don't forget that the child will need this function declared in its propTypes:

MyChild.propTypes = {
  myFunc: React.PropTypes.func,
};

有关组件之间通信的更多详细信息,请参阅Link