Redux createStore 源代码 - 增强器递归回调部分的无限循环风险 ?



我目前正在研究Redux.js。喜欢阅读源代码,我立即深入研究了 Redux 源代码。

阅读创建商店代码,我落在以下代码上:

export default function createStore(reducer, preloadedState, enhancer) {
if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
enhancer = preloadedState
preloadedState = undefined
}
if (typeof enhancer !== 'undefined') {
if (typeof enhancer !== 'function') {
throw new Error('Expected the enhancer to be a function.')
}
return enhancer(createStore)(reducer, preloadedState)
}

创建商店代码的这个循环应该以无限循环结束吗?原因递归地,增强器称自己为 createStore 函数。所以我在这个样板中看到两种情况: - 要么是因为未定义增强器,函数以错误结束 - 或者一切都很棒,函数再次返回创建商店,一次又一次......

你如何分析这个片段?

谢谢

请注意,如果typeof preloadedState !== 'function' && typeof enhancer === 'undefined',该函数将完成其余的工作。

然后,当我们调用enhancer(createStore)(reducer, preloadedState),增强的创建商店enhancer === 'undefined'

当我们调用createStore(reducer, preloadedState)当且仅当preloadedState === 'function时,我们最终将调用 enhancedCreateStore(reducer, undefined, undefined(

这就是为什么它不会以无限循环结束。

最新更新