当我覆盖子类中的函数时,如何调用该函数的父版本?
假设我在React中有两个组件AbstractList和SortableList:
class AbstractList extends React.Component {
getItems() {
...
}
}
class SortableList extends AbstractList {
getItems() {
... do sorting first
return super.getItems(); // QUESTION: how am I supported to actually do this?
}
}
谢谢!
答案 0 :(得分:1)
你不应该这样做
在github上查看issue
许多人已经习惯于使用OO继承而不仅仅是 一个工具,但作为其应用程序中的主要抽象方式。 我你在Java商店工作过,你会知道我在说什么。 在我个人看来,经典的OO继承(在 让许多流行语言成为大多数工作的最佳工具 单独所有工作。但应该更多地处理这种情况 在框架或范例中使用继承时要小心 使用功能组合作为其主要抽象(React)。那里 是我们想要防止的某些模式(有许多奇怪的 人们在组合渲染时可以想到的东西 继承没有意义,通过简单的解决 组成)。还存在使突变更方便的风险。它 从ES6类开始只是作为一种更好的语法可能是有意义的 用于创建React组件,故意限制某些用例 (限制继承深度,制作一些React基类方法 最后)(仅当与React组件一起使用时 - 所有非React ES6课程的使用不受限制。)
而不是这个
class AbstractList extends React.Component {
getItems() {
...
}
}
class SortableList extends AbstractList {
getItems() {
... do sorting first
return super.getItems();
}
}
你应该做
class AbstractList extends React.Component {
getItems() {
...
}
}
class SortableList extends React.Component {
render() {
return <AbstractList items={this.props.item}>{this.props.children}</AbstractList>;
}
}