Thunks 没有出现在 React Native Debugger 的操作列表中

Thunks not appearing in action list in React Native Debugger

迄今为止,我已经完成了两个 React/Redux 个项目,第一个使用我们自己的中间件,最近一个使用 redux-thunk。首先,我们使用 "regular" 操作对象作为我们的异步操作,由我们的中间件解释。在那种情况下,我们的操作可以理解地出现在 React Native 调试器的操作列表中。

然而,在最近的项目中,我注意到我们的 thunk 没有 在调试器中显示为操作,这引发了以下问题:

1) 这正常吗? 2) 如果是这样,人们认为这不是问题吗? 3) 其他async action库有没有同样的问题?

你能和我分享一下你的想法吗? Thunks return thunk 中间件传递调度和调用的函数。如果你在 thunk returns 的函数内部调度一个动作,那么你会看到一个调度。它只是不会来自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. 你称 "dispatch" 为 thunk(但不是真的)。
  2. Redux(或者更确切地说是 thunk 中间件)会检查你 "dispatched" return 是对象还是函数。
  3. 如果它是一个函数,则调用该函数并向该函数提供分派
  4. 那个函数调度一些动作(你实际调度的东西)

所以即使你在技术上 "calling dispatch" 你的 thunk,你实际上只是在你的 thunk returns 的函数内部调度动作。希望对您有所帮助!