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

如何使用connect()函数将含多个组件的文件连接到Redux

多组件文件连接Redux的两种实现方案

方案1:定义组件时直接包裹connect

如果每个组件对应的mapStateToProps、action映射逻辑不同,直接在组件定义的位置用对应参数的connect包裹即可,示例代码:

// 单独定义每个组件对应的状态/action映射(如果各组件逻辑不同的话)
const mapStateForKierowcy = state => ({ /* 该组件需要的状态 */ })
const mapStateForRozliczeniaMojeAuto = state => ({ /* 该组件需要的状态 */ })
const mapStateForRozliczeniaSwojeAuto = state => ({ /* 该组件需要的状态 */ })

export const PageKierowcyTableView = connect(mapStateForKierowcy, actions)((props) =>{
  return (
    <JSX />
  )
});

export const PageRozliczeniaNaMoimAucieTable = connect(mapStateForRozliczeniaMojeAuto, actions)((props) => {
  return (
    <JSX />
  );
});

export const PageRozliczeniaNaSwoimAucieTable = connect(mapStateForRozliczeniaSwojeAuto, actions)((props) => {
  return (
    <JSX />
  );
});

如果所有组件共用同一套状态和action映射逻辑,可以提前封装公共的高阶组件减少重复代码:

// 封装公共连接逻辑
const commonConnect = connect(mapStateToProps, actions)

export const PageKierowcyTableView = commonConnect((props) =>{
  return (
    <JSX />
  )
});

export const PageRozliczeniaNaMoimAucieTable = commonConnect((props) => {
  return (
    <JSX />
  );
});

export const PageRozliczeniaNaSwoimAucieTable = commonConnect((props) => {
  return (
    <JSX />
  );
});

方案2:先定义纯组件,底部统一导出连接后的版本

如果需要保留未连接的纯组件用于单元测试等场景,可以先定义不带export的纯组件,再在文件底部统一导出连接后的版本:

// 定义纯组件,不连接Redux
const PageKierowcyTableView = (props) =>{
  return (
    <JSX />
  )
};

const PageRozliczeniaNaMoimAucieTable = (props) => {
  return (
    <JSX />
  );
};

const PageRozliczeniaNaSwoimAucieTable = (props) => {
  return (
    <JSX />
  );
};

// 底部统一导出连接后的组件
export const ConnectedPageKierowcyTableView = connect(mapState1, actions)(PageKierowcyTableView)
export const ConnectedPageRozliczeniaNaMoimAucieTable = connect(mapState2, actions)(PageRozliczeniaNaMoimAucieTable)
export const ConnectedPageRozliczeniaNaSwoimAucieTable = connect(mapState3, actions)(PageRozliczeniaNaSwoimAucieTable)

// 如有需要也可以同时导出纯组件用于测试
export {
  PageKierowcyTableView as PurePageKierowcyTableView,
  PageRozliczeniaNaMoimAucieTable as PurePageRozliczeniaNaMoimAucieTable,
  PageRozliczeniaNaSwoimAucieTable as PurePageRozliczeniaNaSwoimAucieTable
}

注:如果部分组件不需要访问Redux状态或触发action,无需包裹connect,直接正常导出即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 05:15:04