React Native
comes with a default header, which has a back button which allows you to go back to the previous page. You can also add a button to the right side of the header by using headerRight
property like below;
static navigationOptions = ({ navigation }) => ({
headerTitleStyle: {
...
headerRight: (
<TouchableOpacity
onPress={navigation.getParam('handleClick')}
style={{ marginRight: 17 }}
>
<Text
style={[
styles.headerRightBtn,
navigation.getParam('checkInput')
? styles.applyGreen
: styles.applyGray
]}
>
완료
</Text>
</TouchableOpacity>
)
});
As you can see, a method that gets called onPress
is not a typical this.whateverYouWouldLikeToCall
. Instead, I used navigation
property and used getParam
. This is because navigationOptions
is static
, which I will talk about in a later post.
####TL;DR
I used navigation
in order to call a method when the header right button is pressed.
In order for the button to getParam
, you have to setParam
in componentDidUpdate()
like below
componentDidMount() {
this.props.navigation.setParams({
handleClick: this._makePost
});
}
So when the header right button fires handleClick
via getParam
, a method called _makePost
is executed.