React NavigationのnavigationOptions
にクラスメソッドを渡すには少し工夫必要だった。
やりたいこと
やりたいことは以下のようなこと。ただし、navigationOptions
はstaticメソッドなのにthis.handleSave
を渡そうとしても動かない。
static navigationOptions = ({
headerLeft: <SaveButton onPress={this.handleSave}/>,
})
navigation
にsetParams
して渡す
setParams
でcomponentDidMount
のときに定義し、実行時に渡せればよい。
https://reactnavigation.org/docs/navigators/navigation-prop#setParams-Make-changes-to-route-params
static navigationOptions = ({
headerRight: <SaveButton onPress={() => navigation.state.params.handleSave()}/>,
})
componentDidMount() {
this.props.navigation.setParams({
handleSave: this.handleSave(),
})
}
handleSave = () => {
// 保存処理
}