как перемещаться по другому экрану в промежуточном программном обеспечении response-redux - PullRequest
0 голосов
/ 02 июля 2019

После того, как я получил восстановленный результат от API, нужно перейти к экрану «Настройки», приведенный ниже код работает нормально, но навигация не работает и ничего не происходит. Но это работает, исключение не выбрасывается.

App.js

import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View } from 'react-native';
import { Provider } from 'react-redux'
import { createStore, applyMiddleware } from 'redux'
import reducers from './src/reducers'
import thunk from 'redux-thunk'

import AppNavigator from './src/screens/AppNavigator'
const store = createStore(reducers, applyMiddleware(thunk));

export default class App extends Component {  
  render() {
    return (
      <Provider store={store}>
        <View style={styles.container}>
          <AppNavigator />
        </View>
      </Provider>
    );
  }
}

appnavigator.js

import { createStackNavigator, createAppContainer } from 'react-navigation'
import  HomeScreen  from '../screens/HomeScreen'
import  SettingsScreen  from '../screens/SettingsScreen'        
import { Login } from '../components/Login'
import Settings from './SettingsScreen'

const AppNavigator = createStackNavigator({
  Home: { 
    screen: HomeScreen,
    navigationOptions: ({ navigation }) => ({ header:null })},
  Settings: SettingsScreen,
  Login: Login,
})

export default createAppContainer(AppNavigator);

action.js

import { SHOW_LOADER, AUTH_LOGIN, AUTH_FAIL, ERROR } from './ActionTypes'
import axios from 'axios'
import { NavigationActions } from 'react-navigation';

import Base64 from "../utils/Base64";

const onSuccess = (response, dispatch) => {
  const {Username} = Base64.decoder(response.data)
    if(Username) {
      dispatch(NavigationActions.navigate({
        routeName: 'Settings',
      }));
    }else{
      dispatch({ type: AUTH_FAIL, payload: "Kullanici bilgileri bulunamadi" });
    }

    dispatch({ type: SHOW_LOADER, payload: false });
  }

const onError = (err, dispatch) => {
  dispatch({ type: ERROR, payload: err.response.data });
  dispatch({ type: SHOW_LOADER, payload: false });
}

export const SignInUser = (username, password) => async dispatch => {
  try {
    dispatch({ type: SHOW_LOADER, payload: true });
    let auth = {
      headers: {
        Authorization: 'Basic ' + Base64.btoa(username + ":" + password)
      }
    }

    const response = await axios.post("http://192.168.0.27:81/SignIn", {}, auth);
    onSuccess(response, dispatch);
  } catch (error) {
    onError(error,dispatch);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...