React - 使用相同的道具传播MapStateToProps

时间:2018-05-09 23:24:59

标签: javascript reactjs spread-syntax

我有这个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,它打破了)。

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您不需要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, }; }; 属性重命名为reportESFReport。然后,您将resultStatusReport实际为this.props.ESFReportESFReport.reportthis.props.resultStatusReport