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 中可能出现未处理的 Promise Rejection 网络错误
此商家未启用 Google Pay。 [Android,React-Native]
尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR