Невозможно загрузить провайдера из модуля реакции-редукса в реагировать родной - PullRequest
0 голосов
/ 02 апреля 2019

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

Я мало что знаю о реаги-редуксе. Можете ли вы помочь мне решить эту проблему?

Мой код,

main.js,

import React, {Component} from 'react';
import {
  StyleSheet,
  Dimensions,
  Platform,
  View,
  StatusBar,
  DrawerLayoutAndroid,
} from 'react-native';
import { createStore } from 'redux';
import { Provider } from 'react-redux';
import reducer from '../Redux/reducers';
import { setNavigator, setActiveRoute } from "../Redux/actions";
import DrawerContent from '../Navigation/DrawerContent';
import Toolbar from '../Navigation/Toolbar';
import AppNavigation from '../Navigation/AppNavigation';
import { bgStatusBar, bgDrawer } from '../global.styles';

let store = createStore(reducer);
/* getDrawerWidth       Default drawer width is screen width - header width
* https://material.io/guidelines/patterns/navigation-drawer.html
*/
const getDrawerWidth = () => Dimensions.get('window').width - (Platform.OS === 'android' ? 56 : 64);

export default class Main extends Component {
  constructor() {
    super();

    this.drawer = React.createRef();
    this.navigator = React.createRef();
  }

  componentDidMount() {
    store.dispatch(setNavigator(this.navigator.current));
  }

  openDrawer = () => {
    this.drawer.current.openDrawer();
  };

  closeDrawer = () => {
    this.drawer.current.closeDrawer();
  };

  getActiveRouteName = navigationState => {
    if (!navigationState) {
      return null;
    }
    const route = navigationState.routes[navigationState.index];
    // dive into nested navigators
    if (route.routes) {
      return getActiveRouteName(route);
    }
    return route.routeName;
  };

  render() {
    return (
      <Provider store={store}>
        <DrawerLayoutAndroid
          drawerWidth={getDrawerWidth()}
          drawerPosition={DrawerLayoutAndroid.positions.Left}
          renderNavigationView={
            () => <DrawerContent closeDrawer={this.closeDrawer} />
          }

          ref={this.drawer}
        >
          <View style={styles.container}>
            <StatusBar
                translucent

                animated
            />
            <Toolbar showMenu={this.openDrawer} />
            <AppNavigation
              onNavigationStateChange={(prevState, currentState) => {
                const currentScreen = this.getActiveRouteName(currentState);
                store.dispatch(setActiveRoute(currentScreen));
              }}
              ref={this.navigator}
            />
          </View>
        </DrawerLayoutAndroid>
      </Provider>
    );
  }
}

Login.js

import Main from './main';
render() {
    return (
      <View>
        {this.state.isLoggedIn ?
          <Main/>
        :
        <ChangePassword isUpdatePassword={this.state.isUpdatePassword} callLogin={this.callLogin}/>

    );
}

}

Если я просто вызываю Main class внутри метода render, это работает. Но это не работает с условиями.

...