我正在构建一个应用程序。此应用需要为产品数据请求 woocommerce API。API 一次只允许 100 个项目,因此我不得不使用动态页面参数调用此请求 4 次。
我对这些数据的目标是让 reducer 将数据组合到一个数组中,该数组可以在反应组件中进行过滤。
我目前的问题是我的减速器正在将每个 API 调用添加到它自己的数组中。因此,我没有一个包含 300 个 ish 产品的大数组,而是有一个包含 4 个数组的数组,每个数组包含 100 个产品。请参见下图。
这是动作:
export function fetchJuiceData(page) {
return dispatch => {
dispatch(getDataPending("juicedata"));
return axios
.get(
"API_call/end_point/&page=" +
page
)
.then(response => {
dispatch(getDataSuccess("juicedata", response));
})
.catch(err => {
dispatch(getDataFailure("juicedata", err));
});
};
}
使用异步运行 4 次:
const juiceDataPages = 4;
var i;
for (i = 0; i < juiceDataPages; i++) {
await dispatch(fetchJuiceData(i + 1));
}
我的减速机:
const juiceDataReducer = (state = initState, action) => {
switch (action.type) {
case "FETCH_JUICEDATA_PENDING": {
return { ...state, fetching: true };
}
case "FETCH_JUICEDATA_REJECTED": {
return { ...state, fetching: false, error: action.payload };
}
case "FETCH_JUICEDATA_FULFILLED": {
return {
...state,
fetching: false,
fetched: true,
juiceData: [...state.juiceData, action.payload]
};
}
default: {
return state;
}
}
};
我不是世界上最伟大的程序员,我会喜欢你的意见。这几天我一直在用头撞墙。TIA。