【发布时间】:2020-08-06 08:59:42
【问题描述】:
嗨,我有点困惑 redux thunk 的工作原理。 例如,
此代码有效
代码1
export const getAllUsers = () => (dispatch) => {
axios
.get("https://reqres.in/api/users?page=2")
.then((res) => {
console.log(res);
dispatch({ type: GET_ALL_USER, payload: res.data.data });
})
.catch((e) => console.log(e));
};
但此代码不起作用...
代码2
export const fetchComments = () => () => {
axios
.get("https://jsonplaceholder.typicode.com/posts/1/comments")
.then((res) => {
return {
type: FETCH_COMMENTS,
payload: res.data,
};
});
};
但是这段代码是有效的..
代码3
export const fetchComments = async() => {
let res = await axios.get("https://jsonplaceholder.typicode.com/posts/1/comments")
return {
type: FETCH_COMMENTS,
payload:res.data
}
;
};
所以我真的很想知道为什么 code2 不工作以及为什么 code3 工作。
【问题讨论】:
-
也许this 有帮助,您无法调度代码 3 的结果,因为 thunk 需要将操作作为函数而不是承诺。如果您将代码 2 重新定义为:
fetchComments = () => axios.get,则代码 2 和 3 或多或少是相同的
标签: reactjs redux react-redux redux-thunk