Лучший способ использовать несколько поставщиков контекста в ReactNative - PullRequest
1 голос
/ 08 марта 2020

У меня есть приложение, в котором я использую 3 Context Provider. Чтобы приложение работало, мне нужно обернуть <App/> во все эти providers. Поскольку мое приложение растет, я ожидаю, что у меня будет еще несколько провайдеров для большего количества типов данных, с которыми я должен соединиться. Я уже начал чувствовать, что может быть лучший способ передать провайдеров в <App />.

Мой App.js Код:

import React from 'react';
import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer } from 'react-navigation';
import { Provider as BlogProvider} from './src/context/BlogContext';
import { Provider as VehicleProvider} from './src/context/VehicleContext';
import { Provider as AuthProvider} from './src/context/AuthContext';

import IndexScreen from './src/screens/IndexScreen';
import ShowScreen from './src/screens/ShowScreen';
import CreateScreen from './src/screens/CreateScreen';
import EditScreen from './src/screens/EditScreen';
import VehicleScreen from './src/screens/VehicleScreen';

const navigator = createStackNavigator(
  {
    Index: IndexScreen,
    Show: ShowScreen,
    Create: CreateScreen,
    Edit: EditScreen,
    Debug: DebugScreen,
    Vehicle: VehicleScreen,

  },
  {
    initialRouteName: 'Index',
    defaultNavigationOptions: {
      title: 'Main'
    }
  }
);

const App = createAppContainer(navigator);

export default () => {
  return (
    <BlogProvider>
      <VehicleProvider>
        <AuthProvider>
             <App />
        </AuthProvider>
      </VehicleProvider>
    </BlogProvider>
  );
};

Некоторые из моих вопросов:

  1. Есть ли лучший способ использовать несколько поставщиков контекста в приложении.
  2. Влияет ли порядок, в котором эти поставщики вложены, на приложение?
  3. Можем ли мы пропустить добавление провайдера в <App/> и вместо этого импортировать его на любой экран, где он требуется, и обернуть этот элемент экрана в нем?
...