【发布时间】:2017-05-27 00:33:10
【问题描述】:
我知道在原版 ES6 中你可以写一个 class 那个 extends 一个函数类。这是解释here。
React 支持 ES6 类组件,通过 extending React.Component 和功能组件。不过,在尝试 extend 功能组件时,我遇到了以下错误。
TypeError: Cannot call a class as a function
我正在尝试编写一些扩展组件的代码并且适用于 ES6 类组件和功能组件。我想编写一个返回组件的函数,但我只想扩展和修改一些道具,而不是更高阶的组件。
下面是一些我尝试过但不起作用的示例代码。这可能吗?我意识到BarExtended 根本不会渲染Bar,但我只是在测试。除非这是问题的一部分。
function Bar() {
return (
<h1>Bar</h1>
);
}
class BarExtended extends Bar {
render() {
return (
<h1>BarExtended</h1>
);
}
}
ReactDOM.render(
<div>
<BarExtended />
</div>,
document.getElementById("foo")
);
【问题讨论】:
-
React 推荐组合而不是继承。函数可以很容易地组合,所以如果你放弃继承,你的问题就会消失。
标签: javascript reactjs ecmascript-6