Я хочу использовать некоторую абстракцию при создании моих компонентов React. Например:Абстракция в React.js
class AbstractButton extends React.Component {
render() {
return (
<button
onClick={this.props.onClick}
className={this.definitions.className}>
{this.props.text}
</button>
}
}
class PrimaryButton extends AbstractButton {
constructor(options) {
super(options);
this.definitions = {
className: 'btn btn-primary'
};
}
}
class SuccessButton extends AbstractButton {
constructor(options) {
super(options);
this.definitions = {
className: 'btn btn-success'
};
}
}
Я не хочу, чтобы передать эти definitions
через props
, потому что я знаю, что эти definitions
--in этот случай class
не --будут не изменятся.
Является ли это анти-узором в реактиве? Или все в порядке?
Мой вопрос относится к this altjs issue: этот вид абстракции несовместим с @connectToStores
.
Реакция имеет тенденцию сосредотачиваться на композиции, а не наследовании, но ваш код не выглядит злым для меня. – christopher
Да, это вообще считается анти-шаблон. Вот интересная статья об этом: https://medium.com/@dan_abramov/how-to-use-classes-and-sleep-at-night-9af8de78ccb4 –