我有这个MapStateToProps:

const mapStateToProps = (state) => {
  const date = new Date();
  const year = date.getFullYear();
  const month = date.getMonth() + 1;

  const ESFReport = getESFReport(state);
  const resultStatusReport = getResultStatusReport(state);

  return {
    companInfo: getCompanyInfo(state),
    companyId: getCompanyId(state),
    ...ESFReport,
    ...resultStatusReport,
    year,
    month,
  };
};


而且...ESFReport,...resultStatusReport都具有相同的属性:report,但是我需要以某种方式更改名称,因为在同一组件中,我两次使用const { report } = this.props,但用于不同的道具。

我怎样才能做到这一点? (当我只有... ESFReport时,它可以正常工作,但是当我添加... resultStatusReport时,它坏了)。

提前致谢。

最佳答案

如果您不需要reportESFReport对象中的resultStatusReport以外的任何内容,则可以执行以下操作:

const mapStateToProps = (state) => {
  const date = new Date();
  const year = date.getFullYear();
  const month = date.getMonth() + 1;

  const { report: ESFReport } = getESFReport(state);
  const { report: resultStatusReport } = getResultStatusReport(state);

  return {
    companInfo: getCompanyInfo(state),
    companyId: getCompanyId(state),
    ESFReport,
    resultStatusReport,
    year,
    month,
  };
};


只是将每个属性的report重命名为ESFReportresultStatusReport。然后,您将拥有实际上是this.props.ESFReportESFReport.report和将是this.props.resultStatusReportresultStatusReport.report

09-18 05:47