如何在不使用静态函数的情况下重写此高阶函数?

时间:2016-07-02 00:07:36

标签: reactjs ecmascript-6 redux higher-order-functions

我正在寻找的功能在这里使用静态函数语法完美无缺,但是,我喜欢在构造函数本身上声明的静态函数(即className.staticFunction () => ...而不是static staticFunction = () => ...类定义本身。

这里的代码我指的是我想重构使用构造函数/函数上定义的静态函数而不是static语法,如下所示。

const higherOrderFunction = another => andAnother => class extends Component {

  static functionName = {
    test: React.PropTypes.object
  };

  constructor(props) {
    super(props);
  }

  render() {
    return <h1>Hello, World!</h1>;
  }
};

export default higherOrderFunction;

1 个答案:

答案 0 :(得分:1)

class的值与您没有类定义的构造函数function相同。所以:

const higherOrderFunction = another => andAnother => Component;

function Component() {}

Component.functionName = () => {
  test: React.PropTypes.object
};

Component.prototype.render = () => {
  return <h1>Hello, World!</h1>;
}

export default higherOrderFunction;

您可能希望在函数体中包装函数和成员定义以封装和使用任何参数:

const higherOrderFunction = another => andAnother => {
  function Component() {}

  Component.functionName = () => {
    test: React.PropTypes.object
  };

  Component.prototype.render = () => {
    return <h1>Hello, World! {another} and {andAnother}</h1>;
  }

  return Component;
};

export default higherOrderFunction;