Thunks 未出现在 React Native 调试器的操作列表中

Posted

技术标签:

【中文标题】Thunks 未出现在 React Native 调试器的操作列表中【英文标题】:Thunks not appearing in action list in React Native Debugger 【发布时间】:2019-03-01 04:30:58 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

你能和我分享你的想法吗? 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。

所以顺序是这样的:

    您将“调度”称为 thunk(但不是真的)。 Redux(或者更确切地说是 thunk 中间件)将检查您“分派”的内容是否返回对象或函数。 如果是函数,则调用该函数并将调度提供给该函数 该函数调度一些动作(你实际调度的东西)

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

【讨论】:

谢谢!我确实没有从我正在调度的函数中返回任何东西!

以上是关于Thunks 未出现在 React Native 调试器的操作列表中的主要内容,如果未能解决你的问题,请参考以下文章

出现错误:“未安装 React Native”

React Native 中可能出现未处理的 Promise Rejection 网络错误

此商家未启用 Google Pay。 [Android,React-Native]

尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR

React Native FlatList 未显示

对于最新版本的 react-native,应用程序未在 iOS 上运行