Я экспериментирую с декораторами ES7 и пишу декоратор метода, который просто регистрирует аргументы, с которыми вызывается метод.
В некоторых случаях работает как this.sum(6, 5)
, но этоне работает с функциями стрелок this.arrowSum(5, 10)
и аргументами по умолчанию this.sum()
Я что-то упустил или это просто ограничение в текущей реализации декоратора?
import React from "react";
import ReactDOM from "react-dom";
function logArgs() {
return function(target, property, descriptor) {
let originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(...args);
return originalMethod.call(this, ...args);
};
return descriptor;
};
}
class App extends React.Component {
@logArgs()
sum(a = 1, b = 2) {
return a * b;
}
@logArgs()
arrowSum = (a = 3, b = 4) => {
return a * b;
};
render() {
return (
<div>
{this.sum()} <br /> {this.sum(6, 5)}
<br />
{this.arrowSum()} <br /> {this.arrowSum(5, 10)}
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);