Передача реквизитов компонентам в конфигурации компонентов React Navigation v5 dynamici c - PullRequest
2 голосов
/ 10 февраля 2020

В моем приложении я отображаю экран входа в систему, если пользователь не вошел в систему, и экран входа в систему, если пользователь вошел в систему. В приведенном ниже простом примере вы можете видеть, что я проверяю, есть ли jwt и user существует в моем магазине приставок и затем отображается соответствующий экран.

type Props = {
    +jwt: string | null;
    +user: UserModel | null;
};

export class AuthStackNavigator extends Component<Props> {

    renderScreen() {

        if (this.props.jwt && this.props.user) {
            return (
                <Stack.Screen name={'AuthenticatedView'} component={AuthenticatedView} />
            );
        } else {
            return (
                <Stack.Screen name={'LoginView'} component={LoginView} />
            );
        }
    }

    render() {
        return (
            <Stack.Navigator>
                {this.renderScreen()}
            </Stack.Navigator>
        );
    }
}

const mapStateToProps = (state) => {
    return {
        jwt: getJwt(state),
        user: getUser(state)
    };
};

export default connect(mapStateToProps)(AuthStackNavigator);

Вы можете видеть, что компонент AuthenticatedView отображается, если существуют jwt и user. Внутри AuthenticatedView я в настоящее время снова получаю user из магазина приставок, где он, возможно, равен нулю - это включает еще одну проверку. Есть ли способ, которым я могу передать user компоненту как опору из <Stack.Screen>, поскольку я знаю, что он существует здесь? Таким образом, мне не нужно делать одну и ту же проверку несколько раз.

Мне известно, что вы можете отправлять данные компонентам при навигации с помощью: navigation.navigate('View', props), но я не перехожу на этот экран с помощью этой функции.

1 Ответ

1 голос
/ 10 февраля 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...