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.
所以顺序是这样的:
- 你称 "dispatch" 为 thunk(但不是真的)。
- Redux(或者更确切地说是 thunk 中间件)会检查你 "dispatched" return 是对象还是函数。
- 如果它是一个函数,则调用该函数并向该函数提供分派
- 那个函数调度一些动作(你实际调度的东西)
所以即使你在技术上 "calling dispatch" 你的 thunk,你实际上只是在你的 thunk returns 的函数内部调度动作。希望对您有所帮助!
迄今为止,我已经完成了两个 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.
所以顺序是这样的:
- 你称 "dispatch" 为 thunk(但不是真的)。
- Redux(或者更确切地说是 thunk 中间件)会检查你 "dispatched" return 是对象还是函数。
- 如果它是一个函数,则调用该函数并向该函数提供分派
- 那个函数调度一些动作(你实际调度的东西)
所以即使你在技术上 "calling dispatch" 你的 thunk,你实际上只是在你的 thunk returns 的函数内部调度动作。希望对您有所帮助!