Ich habe auf Dekoratoren in JavaScript gelesen und denke, dass ich die Grundvoraussetzung bekomme.Klasse Dekorateure in ES7
Dekoratoren sind Funktionen, sie erhalten als ein oder mehrere Parameter, was sie dekorieren sollen, und geben das Ergebnis zurück.
Aber ich kam über eine @withStyles
dekoriert Umsetzung in einem React Boiler Plate-Projekt, das ich nicht verstehe, wie funktioniert.
import React, { Component, PropTypes } from 'react';
function withStyles(...styles) {
return (BaseComponent) => class StyledComponent extends Component {
static contextTypes = {
insertCss: PropTypes.func.isRequired,
};
componentWillMount() {
this.removeCss = this.context.insertCss.apply(undefined, styles);
}
componentWillUnmount() {
this.removeCss();
}
render() {
return <BaseComponent {...this.props} />;
}
};
}
export default withStyles;
A würde Anwendungsfall
import s from './MyComponentStyle.scss';
@withStyles(s)
class MyComponent extends Component {
}
sein Wie funktionierts?