Thunk没有出现在React Native Debugger的动作列表中

时间:2018-09-25 14:00:04

标签: react-native redux-thunk react-native-debugger

到目前为止,我已经完成了两个React / Redux项目,第一个使用我们自己的中间件,而最近一个使用redux-thunk。首先,我们将“常规”操作对象用于异步操作,这由中间件解释。在这种情况下,我们的操作可以理解地出现在react本机调试器的操作列表中。

但是,在最近的项目中,我注意到我们的重击并没有在调试器中以 not 的形式出现,这提示了以下问题:

1)这正常吗? 2)如果是这样,人们是否认为这不是问题? 3)其他异步动作库也有同样的问题吗?

1 个答案:

答案 0 :(得分:1)

你能和我分享你的混蛋吗? Thunk返回Thunk中间件传递给其调用的函数。如果要在thunk返回的函数中分派动作,则将看到分派。只是不会从笨拙中得到。示例:

export const gotSomething = data => {
  return {
    type: GOT_SOMETHING,
    data,
  };
};

export const getSomething = () => { // <-- This is our thunk!
  return async dispatch => {
    const { data } = await axios.get('/something');
    dispatch(gotSomething(data)); <-- This is the only thing being dispatched
  };
};

唯一真正可以派发到这里的是GOT_SOMETHING。

所以顺序是这样的:

  1. 您称“派遣”为重击(但不是真的)。
  2. Redux(或更笨拙的中间件)将检查您“分派”的东西是否返回对象或函数。
  3. 如果是函数,则调用该函数并将分派提供给该函数
  4. 该函数调度一些动作(实际上是您调度的东西)

因此,即使从技术上讲,您正在对thunk进行“调用分派”,实际上您实际上只是在thunk返回的函数内部分派了动作。我希望这会有所帮助!