如何在react / redux app中重用一个函数?

时间:2018-01-05 19:38:19

标签: javascript reactjs ecmascript-6

我有一个保存页面的链接。

    <Link
      onClick={this.savePDF}
      button="secondary" >
      Save as PDF
    </Link>

我有一个正在重复使用的保存功能

save = (page) => () => {
  this.props.toggleSaving();
  this.props.savePage(page);
  this.props.toggleSaving();
};

 savePDF = (page) => {
  this.props.toggleSaving();
  this.props.savePage(page);
  this.props.toggleSaving();
  window.open(`${window.location.pathname}/print`, '_blank');
 };

这适合我,但是当我尝试这样做时。

 savePDF = (page) => {
  this.save(page);
  window.open(`${window.location.pathname}/print`, '_blank');
};

虽然它打开了打印页面但它不会触发this.save()

我如何组织它以减少代码重复。

1 个答案:

答案 0 :(得分:2)

save函数在您调用它时会返回一个新函数,如

this.save(page);

我认为没有必要在这里返回一个新功能。你可以简单地定义这样的函数,这将起作用

save = (page) => {
  this.props.toggleSaving();
  this.props.savePage(page);
  this.props.toggleSaving();
};
// And then calling it like this will work
this.save(page);