redux-thunk不使用fetch进行调度,而是使用axios进行调度

时间:2017-04-12 01:15:06

标签: redux fetch redux-thunk

由于nock与axios兼容,并且moxios没有太多文档,我决定使用fetch。但是现在我的行​​动没有被派遣。

import { thunk } from 'redux-thunk';
import axios from 'axios';
import { 
    CURRENT_CONDITION_SUCCESS,
    CURRENT_CONDITION_ERROR,
    LOAD, 
} from './types';

export function initializeLoad() {
    return (dispatch) => {
        dispatch({type: LOAD, bool: true})
        fetch("http://api.wunderground.com/api/777ba6b403bf06b7/geolookup/q/autoip.json")
            .then(res => dispatch(getCurrentConditions(res.data.location.l)))
            .catch(err => dispatch({type: CURRENT_CONDITION_ERROR, error: err}));
    }
}

export function getCurrentConditions(location) {
    return (dispatch, getState) => {
         fetch(`http://api.wunderground.com/api/777ba6b403bf06b7/conditions/${location}.json`)
            .then(condition => dispatch({type: CURRENT_CONDITION_SUCCESS, condition: condition.data.current_observation, input: ''}))
            .then(() => {
                if(getState.isLoading) {
                    setTimeout(() => {
                        dispatch({type: LOAD, bool: false})
                    }, 2000)
                }
            })
            .catch(err => dispatch({type: CURRENT_CONDITION_ERROR, error: err.data}));
    }    
}

知道为什么吗? 检查网络选项卡,我知道我得到的响应为200,包含我期望的所有数据,但是调度(getCurrentConditions)没有被调用。

但是,如果我用axios.get替换fetch,一切正常。

0 个答案:

没有答案