【发布时间】:2015-10-30 09:56:24
【问题描述】:
由于我将代码重构为 ES6,因此我将所有默认值移至 SomeClass.defaultProps = { ... }。
假设一种情况,当有一个类层次结构时,我需要为整个层次结构保留一些默认值。但问题是defaultProps 不适用于扩展类:
class AbstractComponent extends React.Component {
constructor(props) { super(props) }
}
class OneOfImplementations extends AbstractComponent {
constructor(props) { super(props) }
}
//Problem: hierarchy defaults doesn't work
AbstractComponent.defaultProps = { name: 'Super' }
P.S. 我想知道为整个层次结构保留公共资源(变量/函数)的最佳位置在哪里?也许在AbstractComponent 做这样的事情:
constructor(props) {
super(_.assign(props, {
commonValue: 128,
commonCallback: _.noop
}));
}
但问题是无法覆盖子类中的属性之一
【问题讨论】:
-
我很确定 react 建议实际上避免这种对自己的类的扩展
-
@Joshua 请解释一下你的意思。哪种扩展?
-
这一点
class OneOfImplementations extends AbstractComponent {我很确定我看到辣条说应该避免,即一切都应该扩展React.Component -
我正在寻找它,但找不到github问题
-
什么是 ES6 语法不支持 mixins,抽象功能有点未知,但看起来
@decorator语法可能是首选 - github.com/facebook/react/issues/5010
标签: javascript reactjs ecmascript-6