我有下一个React / Redux / Thunk代码:
这是我对API的调用:
//api.js
export const categoriesFetchData = (page, parentOf) => {
return axios.get(
url +
'categories/' +
'?parent=' +
parentOf +
'&limit=10' +
'&offset=' +
(page - 1) * 10,
);
};
这是我的行动(我假装从这个行动中返回一个axios承诺):
//actions.js
export const subCategoriesFetchData = (page = 1, parentOf) => {
return dispatch => {
dispatch(oneCategoryLoading(true));
return api.categoriesFetchData(page, parentOf)
.then(response => {
dispatch(subCategoriesFetchDataSuccess(response.data.results));
dispatch(oneCategoryLoading(false));
})
.catch(error => {
console.log(error);
});
};
};
在我的容器中:
const mapDispatchToProps = dispatch => {
return {
fetchOneCategory: slug => {
dispatch(fetchOneCategory(slug)).then(() => {
console.log('working');
});
},
};
};
但我得到这个错误:
未捕获的TypeError:无法读取未定义的属性'then'
有什么问题以及如何在容器中返回承诺?
谢谢你的帮助 .
3 回答
这是我如何接近这一点 .
首先,您需要对
subCategoriesFetchData
函数进行一些更改:然后,这里是你如何用
mapDispatchToProps
然后链接.then()
来做的伎俩:在你的容器中,你不需要
dispatch(fetchOneCategory(slug))
没有返回承诺,没有then
被读取对不起,我会回答我自己的问题:
我改变了这个:
至
现在我可以做到这一点:
谢谢你的帮助!