我是Redux和Saga的新手。我有一个应用程序正在调用api数据,并且调用正在运行。我正在收回数据。但是,我无法弄清楚如何将数据放入状态。我尝试的方式不起作用。在执行此代码后调用Reducer时,不提供state。
export function* downloadSeriesAsync(action) {
try {
let response = yield call(axios.get, '/content/series.json')
yield put(downloadSeriesSuccess(response.data))
}catch(e) {
console.error(e);
}
}
这是我调用API的Saga函数。
yield put(downloadSeriesSuccess(response.data))
方法downloadSeriesSuccess是一个动作创建者,它发送一个动作,FYI。我不知道这是否是正确的方法。
export default (state = [], action) => {
console.log('Calling the with State', state);
if (action.type === c.ADD_DOWNLOADED_SERIES) {
let newState = { ...state };
newState.series = [...newState.series, action.payload];
return newState;
}
else {
return state;
}
}
我遇到了问题。我的状态总是等于= []。
编辑:我意识到我的初始状态不是数组,所以我改变了所有的reducers来取代一个空对象。 {}。但是,我注意到在我的中间件代码执行后,初始状态似乎被更改回数组。export default (initialState={}) => {
console.log('Initial State', initialState);
const sagaMiddleware = createSagaMiddleware();
const all = applyMiddleware(sagaMiddleware, consoleLog)(createStore)(appReducer, initialState);
sagaMiddleware.run(rootSaga);
return all;
}
我无法找到有关为何发生这种情况的任何信息。这也是我的国家似乎变空的点。