ES7 ECMAScript API, Object.defineProperty(target, name, descriptor), target - , , , React. , , descriptor.value, , :
export function checkProps(target, name, descriptor) {
const decoratee = descriptor.value;
descriptor.value = function decorated(...args) {
console.log('before: ' + name, this.props, args);
decoratee.apply(this, args);
console.log('after: ' + name);
};
}
export function checkProps(config) {
return function configurableCheckProps(target, name, descriptor) {
const decoratee = descriptor.value;
if (config.someOption) {
}
descriptor.value = function decorated(...args) {
console.log('before: ' + name, this.props, args);
if (config.someOption) {
}
decoratee.apply(this, args);
console.log('after: ' + name);
};
};
}
, , .
, . !
EDIT: , ES7, 2016 1,