2

全部:

当我尝试遵循有关异步操作的教程http://redux.js.org/docs/advanced/AsyncActions.html时,我对 Redux 还是很陌生

有一个叫做 thunk 的概念,我不太明白为什么我们需要一个 thunk 来执行异步操作,为什么我们不能简单地调度 init 信号,然后从 fetch data 中获取数据,然后在 promise 中调度完成信号?

function fetchDataAction(dispatch){
    dispatch({
        type: "START"
    })
    fetch("DATA_URL")
        .then(function(res){return res.json();})
        .then(function(json){
            dispatch({
                type: "SUCCESS",
                data: json
            })
        })
}

谢谢

4

1 回答 1

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

于 2016-06-17T02:20:51.263 回答