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

如何将React组件库接入Redux、Router等应用上下文?

问题:组件库无法访问宿主应用的Redux/React Router上下文?

我维护多个共享大量组件的项目,因此搭建了一个公共组件库。其中部分组件需要依赖Redux或React Router的能力,原本以为只要宿主应用用Provider(Redux)和BrowserRouter(React Router)把组件库的组件包裹起来,组件就能自动访问对应的上下文,但实际运行时却出了问题。

宿主应用代码示例

import { Provider } from 'react-redux'
import store from 'store'
import { MyLibComponent } from 'myLibComponent'

<Provider store={store}>
  <BrowserRouter>
    <MyLibComponent />
  </BrowserRouter>
</Provider>

组件库组件代码示例

import { useSelector } from 'react-redux'; 
import { useLocation } from 'react-router-dom';

const MyLibComponent = () => {
  const reducer = useSelector(state => state.reducer)
  const location = useLocation()

  // 组件逻辑...
}

当前问题

运行时收到错误:MyLibComponent无法访问Redux store,useLocation返回undefined。目前我只能通过props传递store给需要Redux的组件,或是把React Router的相关方法作为props传入组件来解决,但我想知道:

  1. 有没有办法让组件库直接对接宿主应用的Redux/React Router上下文?
  2. 为什么当前的写法无法实现上下文共享?

我查过相关讨论,提到Material-UI通过将主题相关依赖设为开发依赖,实现了组件库与宿主应用的主题上下文共享,但我把Redux和React Router设为组件库的开发依赖后,问题依然存在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:55:37