Я не могу понять это.Мой случай - приложение, которое не требует входа в систему, но некоторые экраны делают.Моя идея состоит в том, чтобы создать HOC, который будет проверять разрешение и перенаправлять обратно для входа в систему на выбранных экранах.
Я перенаправляю с помощью обычной функции навигации.Когда я нажимаю кнопку, которая должна перенаправить меня к запрещенному экранному эффекту, это выглядит так:
Я вижу переход к запрещенному экрану, затем экран входа в систему отображается как модальный. Затем я перенаправлен обратно на запрещенный экран.Я хочу добиться хорошего решения, которое позволит избежать перенаправления на запрещенный экран, показывающий вместо этого экран входа в систему или полный экран вашего профиля.
My HOC
export function MustBeLoginAndCompleteProfile(Comp) {
class NewComp extends React.PureComponent {
constructor(props){
super(props);
if(!props.isAuthenticated){
setTimeout(()=> {
props.navigation.navigate({
routeName: 'Login'
})
},0);
}
}
componentWillReceiveProps (newProps) {
console.log(newProps);
}
render() {
return <Comp />
}
}
const mapStateToProps = (state) => {
return {
isAuthenticated: state.login.isAuthenticated,
}
}
return withNavigationFocus(connect(mapStateToProps, null)(NewComp))
}
Определение моего маршрутизатора. GameDetails - запрещенный экран.
const gameTab = createStackNavigator({
Games: {
screen: GamesScreen,
cardStyle: Styles.cardStyle,
navigationOptions : {
...defaultHeaderOptions,
cardStyle: Styles.cardStyle,
title: I18n.t('title_scores'),
},
},
GameDetails: {
screen: MustBeLoginAndCompleteProfile(GamesDetailsScreen),
navigationOptions : {
...defaultHeaderOptions,
title: I18n.t('title_score_details'),
},
},
GamesDetailsPreviewScreen: {
screen: GamesDetailsPreviewScreen,
navigationOptions : {
...defaultHeaderOptions,
title: I18n.t('title_score_details'),
},
}
},{
});