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

React中如何将InvoiceDetail组件的数据传递给InvoiceItem组件

React + TypeScript + Redux 父子组件传值实现方案

步骤1:修改父组件,传递目标参数

在父组件InvoiceDetail渲染子组件时,在原有属性透传的基础上,额外追加需要传递的参数,比如路由id、invoiceEntity实体数据:

// 父组件修改后的return部分
return (
  <Row>
    {/* 新增invoiceId、invoiceInfo两个自定义参数传递 */}
    <InvoiceItem 
      {...props} 
      invoiceId={props.match.params.id} 
      invoiceInfo={invoiceEntity} 
    />
  </Row>
);

步骤2:修改子组件Props接口,声明接收参数的类型

在子组件的IInvoiceItemProps接口中,新增父组件传递的参数对应的类型定义,避免TS类型报错:

// 这里的InvoiceEntityType替换为你项目中invoiceEntity的实际TS类型即可
export interface IInvoiceItemProps extends StateProps, DispatchProps, RouteComponentProps<{ url: string }> {
  invoiceId: string;
  invoiceInfo: InvoiceEntityType;
}

步骤3:子组件中访问并使用传入的参数

可以直接从props中解构出目标参数使用,比如用传入的id拉取对应子项数据:

export const InvoiceItem = (props: IInvoiceItemProps) => {
  // 解构出父组件传入的参数
  const { invoiceItemList, match, loading, invoiceId, getEntities } = props;

  // 组件挂载后用传入的id拉取对应发票子项数据
  useEffect(() => {
    if (invoiceId) {
      getEntities(invoiceId);
    }
  }, [invoiceId, getEntities]);

  return (
    <div>
      <h2 id="invoice-item-heading">
        Invoice Items (当前发票ID: {invoiceId})
      </h2>
    </div>
  ) 
}

注意事项

  • 你可以根据业务需求传递任意参数,只需要在子组件的Props接口中补充对应的类型定义即可
  • 由于子组件使用connect包裹,自定义传入的属性会和Redux映射的stateProps、dispatchProps自动合并,无需额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:54:01