响应redux通过thunk中间件访问外部api

时间:2019-02-07 01:48:51

标签: reactjs redux react-redux redux-thunk

我正在尝试学习react-redux。为了调用外部rest API,我使用了thunk中间件。

但是语法如此让我感到困惑,如果有人可以解释我,我将不胜感激。

"aaaaaa-f2q09-bbbbb"
"aaaaaa-f2q2008-bbbbb"
"aaaaaa-f4q-2008-fffff"
"f4q-aaaaa-eeeeee-2008"
"q2-aaaaaaaaa-eeeeeee-2005"
"aaaaaaaa-3q-2008-rrrrrrr"

因此,为了从外部API获得响应,我正在调用export function listTodos() { return (dispatch) => axios.get("http://localhost:5001/todos") .then(response => { console.log(response.data); dispatch(getTodos(response.data)); }) } export function _listTodos(todos) { return { type: 'LIST_TODOS', todos: todos } } 函数,该函数调度listTodos函数返回的操作。

让我感到困惑的部分是语法(也许是因为它不是ES6,我对此不太熟悉)。

  

返回如何获取参数,调度?

     

此调度的发源地,致电listTodos

时没有传递任何内容      

为什么我什至需要退货,不应该从listTodos内派出足够的行动

1 个答案:

答案 0 :(得分:0)

Redux仅接受纯JavaScript对象进行分发。笨拙的中间件通过允许您为分派提供功能来克服了这一问题。 在此示例中,实质上,您正在做的是返回对将由thunk执行的调度的函数引用。

  
    

返回如何获取参数,调度?

         

此调度的发源地,我打电话给listTodos时没有传递任何东西

  

当thunk遇到一个函数时,它将执行该函数并将传递作为参数传递,以便您可以在函数中实际使用它来进行调度(_listTodos(todos))。 因此,笨拙的人会做这样的事情

   if(typeof action === 'function') {
       //Reason why it takes a dispatch parameter
       //And thunk is the one who sends it to the function
       action(dispatch);
   }

其中action是您从listTodos()返回的函数

  
    

为什么我什至需要退货,不应该从那时开始就分派足够的行动

  

需要返回以赋予thunk功能,以便它可以执行上述操作。