由于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,一切正常。