は、あなたが同様のコンポーネントレベルでnavigationOptionsを使用することができ、この
const HOME = TabNavigator({
[SCREENS.EXPLORESCREEN]: { screen: ExploreScreen },
[SCREENS.ASKSCREEN]: { screen: AskScreen },
},{
initialRouteName: SCREENS.EXPLORESCREEN
})
const PrimaryNav = StackNavigator({
[SCREENS.HOMESCREEN]: {
screen: HOME,
navigationOptions=({navigation})=>{
return{
tabBarOnPress :()=>{
if (typeof navigation.state.params.cancelState!=="undefined"){
navigation.state.params.cancelState()
}
else{
//your stuff
}
}
}
}
},
},
{
// Default config for all screens
headerMode: "screen",
initialRouteName: SCREENS.HOMESCREEN
,
}
);
ExploreScreen.js
class ExploreScreen extends Component {
componentDidMount(){
this.props.navigation.setParams({
cancelState:this.cancelState
})
}
cancelState=()=>{
//your Stuff
}
}
- ようTabNavigatorコンテナがあるとします。
ありがとう!注意すべき1つのケースは、タブがstackNavigatorである場合です。その場合、paramsに入る前にstate.routesにアクセスする必要があります。また、navigationOptionsの後に "="ではなく ":"を付ける必要がある小さなタイプミスです。その他のソリューション? – Bob