Я использую 2 отдельных StackNavigators в своем приложении и отображаю их в структуре условия if.Например:
if(this.props.authToken)//authToken is a state object setting in one of my reducers
return <AppNavigator />
else
return <AuthNavigator />
Смотрите, я буду использовать этот объект authToken почти на каждом экране AppNavigator.
В настоящее время я использую один способ - получить это в моей функции "mapStateToProps" в каждомзаявление на экспорт экранов.
class SomeScreen extends React.Component {
render() {
return (
<View><Text>Some UI {this.props.authToken.userName} </Text></View>
);
}
}
const mapStateToProps = state => {
return {
//This line that i have to write in every screen
authToken: state.app.authToken
};
};
const mapDispatchToProps = dispatch => {
return {...}
};
export default connect(mapStateToProps, mapDispatchToProps)(SomeScreen);
Но мне это не понравилось.Поэтому, если есть объект, который я мог бы использовать на большинстве экранов моего навигатора, я бы хотел, чтобы он передавался из моего корневого компонента в компонент рендеринга, например:
if(this.props.authToken)//authToken is a state object setting in one of my reducers
return <AppNavigator authToken={this.props.authToken} someOtherCommonProp={{....}}/>
else
return <AuthNavigator />
Поэтому мой вопрос заключается в том, что будет лучшимпрактиковаться в этом вопросе.