how to async/await redux-thunk actions?

后端 未结 4 1766
耶瑟儿~
耶瑟儿~ 2020-12-08 04:37

action.js

export function getLoginStatus() {
  return async(dispatch) => {
    let token = await getOAuthToken();
    let success = await verifyToken(toke         


        
4条回答
  •  悲&欢浪女
    2020-12-08 05:01

    The Promise approach

    export default function createUser(params) {
      const request = axios.post('http://www...', params);
    
      return (dispatch) => {
        function onSuccess(success) {
          dispatch({ type: CREATE_USER, payload: success });
          return success;
        }
        function onError(error) {
          dispatch({ type: ERROR_GENERATED, error });
          return error;
        }
        request.then(success => onSuccess, error => onError);
      };
    }
    

    The async/await approach

    export default function createUser(params) {  
      return async dispatch => {
        function onSuccess(success) {
          dispatch({ type: CREATE_USER, payload: success });
          return success;
        }
        function onError(error) {
          dispatch({ type: ERROR_GENERATED, error });
          return error;
        }
        try {
          const success = await axios.post('http://www...', params);
          return onSuccess(success);
        } catch (error) {
          return onError(error);
        }
      }
    }
    

    Referenced from the Medium post explaining Redux with async/await: https://medium.com/@kkomaz/react-to-async-await-553c43f243e2

提交回复
热议问题