Как передать извлеченные данные с сервера на несколько экранов из stack navigator в react native с использованием redux?

#react-native #redux #react-redux #redux-thunk #react-redux-form

#react-native #redux #react-redux #redux-thunk #react-redux-form

Вопрос:

У меня есть функция входа в систему, которая извлекает информацию о пользователе из базы данных mysql. Я хочу отправить эти данные на разные экраны, некоторые из которых отсутствуют в stack navigator. Я некоторое время занимался исследованиями и узнал, что это можно сделать с помощью redux, но я не смог найти четкого примера того, как этого добиться. Есть предложения о том, как это сделать?

Вот моя функция входа в систему:

 login = () => {
    if (this.state.inputFieldsStatus == true)
        {  
            // this.setState({passwordError:" Something went wrong! "})
            fetch('http://ip_Adress/login', {
                method: 'POST', // *GET, POST, PUT, DELETE, etc.
                headers: {
                    'Accept': 'application/json',
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify({
                    email: this.state.email,
                    password: this.state.password,
                })
            })
            .then((response) => response.json())
            .then((res) => {

                // alert(JSON.stringify(res.message));
            
                if (res.success === true ) {
                    // AsyncStorage.setItem('user', res.user);
                    this.props.navigation.navigate('Home', 
                        // {
                        //     screen: 'Messages',
                        //     params: 
                        //         {
                        //             message: res.message,
                        //             otherParam: 'anything you want here'
                        //         } 
                        // },
                        {
                            screen: 'Profile',
                            params: 
                                {
                                    message: res.message,
                                    otherParam: 'anything you want here'
                                } 
                        }
                    );
                } else {
                    this.setState({passwordError: res.message })
                    // alert(res.message);
                }
            })
            .done();
        }
        else 
            {
                // alert(' Please fill in all fields! ');
                this.setState({passwordError:" Please fill in all fields! "})
            }
}
 

Комментарии:

1. Я предложу вам сохранить данные в контексте.

2. Почему этот вопрос помечен как redux, я не вижу никакого кода, указывающего, что вы используете redux store?

3. попробуйте этот контекстный api

4. @ C.K Большое вам спасибо 🙂

5. Решил ли context API вашу проблему? @User10