3

我试图从(我的上帝,看看我们走了多远!)掌握了这段代码。react-redux-universal-hot-example

无论如何..

他们将一个类的 2 个静态方法声明为对 2 个函数参数的引用。

export default function connectData(fetchData, fetchDataDeferred) {
  return function wrapWithFetchData(WrappedComponent) {
    class ConnectData extends Component {

      static fetchData = fetchData;
      static fetchDataDeferred = fetchDataDeferred;

      render() {
        return <WrappedComponent {...this.props} />;
      }
    }

    return ConnectData;
  };
}

关键是..这行得通...但是 ES6 或 ES7 都支持它吗?你可以实现一个类成员作为对你作为参数接收的东西的引用吗?

4

2 回答 2

4

根据a 的语法,ClassElement它不是有效的 ES6 ,并且在 ES6 REPL 上尝试时失败:

const method = () => {};
class Example { static _method = method; }
//=> Unexpected token (2:31)

...但是是为 ES7+ 提出的,这大概是 babel 插件实现的功能。

于 2016-02-11T03:31:05.637 回答
0

为什么不?基本上他们返回这个:

return {
  fetchData         : fetchData,
  fetchDataDeferred : fetchDataDeferred,
  render            : function()  {...},
  __proto__         : Component 
};

不完全是,但从概念上讲它足够接近......

于 2016-02-11T02:34:31.613 回答