调用父组件函数

时间:2016-05-09 06:04:12

标签: react-native

挣扎着一些基本的反应原生的东西。 我有一个主要细节场景。

我按下列表项上的编辑按钮以进入详细视图,在该视图中,我向导航栏添加了一个保存按钮。简单明了。

通过以下方式导航到详细信息屏幕:

this.props.navigator.push({
      component: EditScreen,
      passProps: {
        id:myID,
      },
      onPress: this.onSave,
      rightText: 'Save'
    });
}

当点击导航栏上的保存按钮时,会调用父组件的onSave方法,而忽略某些修改的上下文。

这是如何在本地反应中完成的? 我是一个反应原生的初学者,只是希望能够清楚地了解这些东西是如何发生的,然后转移到一些受助于灵感的libs; - )

更新 - 绑定到此不是问题

流速:

  • 我按下一行,触发传入ID的onEdit方法 我要编辑的项目
  • onEdit按下导航器上的EditScreen组件
  • onEdit添加rightText和onPress绑定到此(onSave绑定在构造函数中,如某些注释/答案所述)
  • 导航到EditScreen时,实体将通过其ID
  • 获取
  • 我编辑实体并按'保存'

按save时,我返回到父视图,并且没有对该实体的引用。这是我的问题,而不是方法的约束力。

1 个答案:

答案 0 :(得分:0)

使用es6类时,this不会自动绑定到函数,就像React.createClass那样。您必须手动将this绑定到类函数。有多种方法可以做到这一点。

  • 您可以使用es6 fat箭头绑定this:  onPress: () => this.onSave()

  • 您可以使用Function.prototype.bind(): onPress: this.onSave.bind(this)

  • 您也可以在构造函数上绑定它们,因此该方法只创建一次(性能最佳,但如果您只是构建常规UI则无关紧要;如果您的onSave函数被称为1000)每帧的时间,那么这可能是一个好主意):

constructor () {
  super()
  this.onSave = this.onSave.bind(this)
}