Реагируйте по умолчанию на экраны Native StackNavigator для экранов - PullRequest
0 голосов
/ 26 октября 2018

Я использую 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 />

Поэтому мой вопрос заключается в том, что будет лучшимпрактиковаться в этом вопросе.

1 Ответ

0 голосов
/ 26 октября 2018

Я думаю, что если authToken не будет изменяться во времени или обновлять его внешним способом, вам не придется использовать его в избыточном состоянии, поэтому, на мой взгляд, ваше решение выглядит хорошо. Пожалуйста, дайте мне знать.

...