Нужно ли использовать Redux или Context API? - PullRequest
2 голосов
/ 19 апреля 2019

У меня есть приложение, в котором пользователь, как обычно, первый. Мое приложение имеет несколько экранов, по которым осуществляется реагирование-native-навигация.

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

Нужно ли использовать Redux или контекстный API для решения этой проблемы или есть другой способ передачи этих данных между экранами назад и вперед без изменения проекта.

Вот мой App.js:

import React, { Component, PropTypes } from 'react';
import { AppNavigator } from './components/Navigator';


 class App extends React.Component {
  render() {
    return (
      <AppNavigator />
    );
  }
}
export default App;

Вот мой компонент навигатора:

const Stack = createStackNavigator({

    Main: { screen: MainScreen },
    Login: {screen: LoginScreen},
    Profile: {screen: ProfileScreen},
    NewSurvey: {screen: NewSurveyScreen},
},
    {
        initialRouteName: 'Login',
        headerMode: 'none',
        navigationOptions: {
            headerVisible: false,
            gesturesEnabled: false,
        }
    })

export const AppNavigator = createAppContainer(Stack);

Ответы [ 3 ]

2 голосов
/ 19 апреля 2019

Я думаю, что вы используете React Navigation в соответствии с общим кодом. Я бы посоветовал вам реализовать поток аутентификации, как предложено здесь и использовать Redux для установки / доступа к уникальному ID. Redux обслуживает гораздо больше вещей и широко используется для управления состоянием.
Вы можете установить uniqueID в _signInAsync () и затем получить к нему доступ через. LocalStorage может быть вариантом, но не осуществимым решением, так как доступ к значениям из LocalStorage может повлиять на производительность приложения.

2 голосов
/ 19 апреля 2019

Для передачи данных на другие экраны вы можете использовать React Navigation метод навигации и передачу некоторых данных внутри него.

Я не знаю, как вы хранили данные. Используете ли вы базу данных, такую ​​как Realm или SQLite и т. Д. ... но всякий раз, когда вы извлекаете данные оттуда и хотите передать их на другие экраны , делайте это как показано ниже:

this.props.navigation.navigate('SecondPage', {
        //your data goes here
        });

например:

this.props.navigation.navigate('Homescreen', {
       username: this.state.username,
       });

и затем вы можете получить эти данные, как показано ниже:

const username = navigation.getParam('username', 'Default'); //default is a value that will be used if there was no username passed 
0 голосов
/ 19 апреля 2019

Redux и ContextApi являются менеджерами состояний вашего приложения.У них есть некоторые преимущества и недостатки для вашего приложения.

твит от dan_abramov (создатель Redux):

Моя личная сводка заключается в том, что новый контекст готов к использованию для низкогочастота маловероятных обновлений (например, локаль / тема).Также хорошо использовать его так же, как использовался старый контекст.Для статических значений, а затем распространять обновления через подписки.Он не готов к использованию в качестве замены для всех потоков, подобных распространению состояний.

На самом деле, я предпочитаю использовать Redux в вашем случае.

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