class 方法可以在 ES 6 或 7 中声明为引用吗?
Can class methods be declared as a reference in ES 6 or 7?
我正在尝试从 react-redux-universal-hot-example
掌握 this piece of code(我的上帝,看看我们走了多远!)。
总之..
他们为 class 声明了 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 是否支持它?你能实现一个 class 成员作为对你接收到的参数的引用吗?
为什么不呢?基本上他们 return 这个:
return {
fetchData : fetchData,
fetchDataDeferred : fetchDataDeferred,
render : function() {...},
__proto__ : Component
};
不完全是,但概念上已经足够接近了......
根据the grammar for a ClassElement
, and fails when attempted on an ES6 REPL,它不是有效的 ES6:
const method = () => {};
class Example { static _method = method; }
//=> Unexpected token (2:31)
...但是是 proposed for ES7+,这大概是 babel 插件实现的功能。
我正在尝试从 react-redux-universal-hot-example
掌握 this piece of code(我的上帝,看看我们走了多远!)。
总之..
他们为 class 声明了 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 是否支持它?你能实现一个 class 成员作为对你接收到的参数的引用吗?
为什么不呢?基本上他们 return 这个:
return {
fetchData : fetchData,
fetchDataDeferred : fetchDataDeferred,
render : function() {...},
__proto__ : Component
};
不完全是,但概念上已经足够接近了......
根据the grammar for a ClassElement
, and fails when attempted on an ES6 REPL,它不是有效的 ES6:
const method = () => {};
class Example { static _method = method; }
//=> Unexpected token (2:31)
...但是是 proposed for ES7+,这大概是 babel 插件实现的功能。