如何在响应本机中获得调度结果?

时间:2020-01-15 15:27:34

标签: react-native react-redux redux-thunk

我是React Native的新手,正在尝试构建具有登录功能的App。这是我的应用程序的概述。

在我的根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中的其他屏幕。谢谢。

0 个答案:

没有答案