在Axios get的 Saga 中,我想发送一个分页的get请求,但在第一种方法中,它返回undefined,而在第二种方法中,它工作正常。在第一种方法中,我在URL中使用了美元符号标识符。
第一:
function* workGetAllCats(action: any): any {
let pageNumber = action.payload;
let URL = `/api/admin/category?page=${pageNumber }`;
const fetchAllCats = yield call(() => axios.get(URL));
const formattedResponse = fetchAllCats.data;
yield put(getAllCatsSuccess(formattedResponse));
}
function* catIndexSaga() {
yield takeEvery("catIndex/getAllCats", workGetAllCats);
}
export default catIndexSaga;
第二:
function* workGetAllCats(action: any): any {
let pageNumber = action.payload;
const fetchAllCats = yield call(() =>
axios.get(`/api/admin/category?page=${pageNumber}`)
);
const formattedResponse = fetchAllCats.data;
yield put(getAllCatsSuccess(formattedResponse));
}
function* catIndexSaga() {
yield takeEvery("catIndex/getAllCats", workGetAllCats);
}
export default catIndexSaga;
我想知道发生了甚么事,以及第一种方法与第二种方法有甚么分别
1条答案
按热度按时间j5fpnvbx1#
第一种方法:
一旦你到了。
URL已定义为
undefined
。因为JavaScript不返回:D但是,第二种方法也是在您想要进行调用时构建URL。
由于pageNumber引用action.payload,这意味着它是由源代码引用参数,因此在第二次调用时,将定义pageNumber。
因此,您将获得一个新页码
第一种方法是不正确的。第二种方法可能更好,如果:
祝你好运兄弟:)