You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中嵌套Redux容器与展示组件遇错求助

问题描述

我之前翻了好多相关问题的解决方案,但都解决不了我当前的需求,说不定我在核心逻辑的理解上就有误区。之前参考过两篇相关内容:

  • 《Nesting a container component in a presentational component》(Stackoverflow)
  • 《Why using nested connect react redux components is good》(Medium)

我的代码示例可在CodeSandbox中查看,标识为43w8vkl554

我的组件嵌套结构如下:

<Provider store={store}>
  {/* 经Redux连接的容器组件(包含props.children) */}
  <Navigation>
    {/* 展示组件 */}
    <Main>
      {/* 经Redux连接的容器组件 */}
      <Counter />
    </Main>
  </Navigation>
</Provider>

这个结构看起来逻辑通顺,但浏览器却抛出了错误提示:

You must pass a component to the function returned by connect. Instead received undefined

错误来自Navigation.tsx。我试着把Counter改成展示组件后就恢复正常了,所以推测要么是TypeScript的类型定义有问题,要么是我的实现方式不支持在已连接组件内部嵌套容器组件的场景。

在CodeSandbox里,错误是在Main组件中组合Counter时出现的,是不是我漏掉了什么类型定义?我不想只在顶层Navigation容器里做一次store连接,更想遵循社区里的相关建议来实现。


补充说明

@Tomasz已经帮我解决了这个错误,但我完全搞不懂问题的根源,查了TypeScript模块解析的官方文档也没找到头绪。这会不会和index.js里导出的类型有关?


问题答案

这个问题的核心原因是循环引用:部分组件在导入过程中被提前加载,导致组件变成了undefined,最终触发了connect的错误提示。解决方法很简单——直接导入目标组件,避免出现循环引用的情况即可。

内容的提问来源于stack exchange,提问作者Tom Siwik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:28:05