为什么Redux将调度传递给动作的返回函数?

问题描述:

就Redux + React(和ES6)而言,完全的初学者对我很感兴趣 - 我已经建立了所有的管道,我所有的状态都在更新,但我仍然有点困惑。有教程进行操作,请在终极版行动之一,开始了: 为什么Redux将调度传递给动作的返回函数?

export function getApiData(){ 
 
     return(dispatch) => {return(dispatch) => { -some other actions here- } 
 
}

此功能从API获取数据,所以它还会调度getApiDataRequested和GetApiData成功的行动,但上面并对我来说没有意义。现在我知道调度表示意图更新Redux状态,但为什么调度作为参数传递给返回函数?

干杯!

+0

那ES6箭头的功能,它不返回调度,其实际发送派遣一个ananymous函数,其中该行动将发生 – Jeffin

这是因为它是使用Redux-thunk的异步操作的示例。 如果你看看这个中间件,它会检查你的动作是否是一个函数,如果是,它会将调度传递给你的返回函数。你不能只用REDX调用一个动作,你总是需要调度它,所以你应该使用调度对象来调用你的动作。

function createThunkMiddleware(extraArgument) { 
    return ({ dispatch, getState }) => next => action => { 
    if (typeof action === 'function') { 
     return action(dispatch, getState, extraArgument); 
    } 

    return next(action); 
    }; 
} 

https://github.com/gaearon/redux-thunk

+0

啊,那是非常合情合理的;因为这个特定的getApiData函数从字面上调度其中的其他函数,所以它需要该调度参数来访问调度函数。我不相信我没有建立这种联系。 –