1

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

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

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

4

1 回答 1

1

你能和我分享你的thunk吗?Thunks 返回 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. 您将“调度”称为 thunk(但不是真的)。
  2. Redux(或者更确切地说是 thunk 中间件)将检查您“分派”的东西是否返回对象或函数。
  3. 如果它是一个函数,则调用该函数并将调度提供给该函数
  4. 该函数调度一些动作(你实际调度的东西)

因此,即使您在技术上是在您的 thunk 上“调用调度”,您实际上只是在您的 thunk 返回的函数内部调度操作。我希望这有帮助!

于 2018-09-28T06:01:56.497 回答