Voglio usare un po 'di astrazione nella creazione dei miei componenti React. Per esempio:Abstraction in 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'
};
}
}
io non voglio passare questi definitions
via props
perché so che queste definitions
--in questo caso il class
--sia non cambiano mai.
È un anti-pattern in React? O è OK?
La mia domanda si riferisce a this altjs issue: questo tipo di astrazione non è compatibile con @connectToStores
.
React tende a concentrarsi su Composition, piuttosto che sull'ereditarietà, ma il tuo codice non mi sembra malvagio. – christopher
Sì, è generalmente considerato un anti-pattern. Ecco un interessante articolo a riguardo: https://medium.com/@dan_abramov/how-to-use-classes-and-sleep-at-night-9af8de78ccb4 –