Как получить результат отправки в реагировать родной? - PullRequest
0 голосов
/ 15 января 2020

Я новичок в React Native и пытаюсь создать приложение с функцией входа в систему. Вот обзор моего приложения.

В моем root app.js

const rootReducer = combineReducers({
    login: loginReducer,
    preload: preloadReducer,
});
const store = createStore(rootReducer, applyMiddleware(ReduxThunk));

export default function App() {
    return (
        <Provider store={store}>
          <MyNavigator/>
        </Provider>
        );
};

В моем LoginScreen.js у меня есть

import * as authActions from '../store/actions/auth';

const LoginScreen = props => {
    const loginHandler = async () => {
        try {
            // login here
            await dispatch(authActions.login(username, password));

            // I want to get login result and navigate to different screens
            if (alreadyLogin) {
                props.navigation.navigate('MainScreen');
            } else { 
                props.navigation.navigate('StartupScreen'); 
            }
        }
        catch (err) {
            console.log(err);
        }
    }
    return (<View style={styles.login}>
        <Button title='Login' onPress={loginHandler}
    </View>);
}

В ../store/action/auth.js

export const login = (username, password) ={
    return async dispatch => {
        const response = await fetch(url);
        const resData = await response.json();
        let results = JSON.parse(resData.results);

        // if login success, I dispatch the token for later use
        if (resData.errno===0){
             dispatch({ type: LOGIN , result: results });
        } else {
             dispatch({ type: RESET , result: null });
        }
    }
}

Могу ли я добиться того, чего хочу, с текущей структурой? Я хочу получить результат входа и перейти к другим экранам в моем LoginScreen.js выше. Спасибо.

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