所有
当我尝试按照有关异步操作http://redux.js.org/docs/advanced/AsyncActions.html
的教程时,我是Redux的新手有一个名为thunk的概念,我不太明白为什么我们需要thunk做异步动作,为什么我们不能只是简单地调度init信号,然后获取数据然后从获取数据中的promise中调度完成信号?
function fetchDataAction(dispatch){
dispatch({
type: "START"
})
fetch("DATA_URL")
.then(function(res){return res.json();})
.then(function(json){
dispatch({
type: "SUCCESS",
data: json
})
})
}
由于
答案 0 :(得分:1)
Redux商店仅将普通对象识别为Action。因此,您只能dispatch
对象到商店。 redux-thunk
教会商店将功能识别为动作。
有关redux-thunk
的更多信息,请阅读作者本人:How to dispatch a Redux action with a timeout?
另一种思考方式是redux-thunk
为您提供直接访问dispatch
的方法,以便您可以随意发送任何内容。
如果没有redux-thunk
,您的操作创建者就没有dispatch
作为参数。在这种情况下,fetchDataAction
仅适用,因为redux-thunk
会将dispatch
作为参数。