Итак, я пробовал два разных подхода по мере необходимости, то есть со стрелочными функциями и функциями без стрелок, и при написании кода я заметил что-то странное в обоих из них, функцию без стрелок, т.е.
close() {
this.setState({
show: false
});
}
рассматриваются как метод (ы), что верно, поскольку они являются функциями,

Но когда я пишу функцию со стрелкой, например:
goToNextPage = () => {
this.setState(({ page }) => ({ page: page + 1 }));
};
Это считается свойством, я совершенно не понимаю этого поведения. Это что-то не так с VSCode или это совсем другое?
@Tholle Хорошо, понял, но можно ли тогда использовать функцию стрелки в качестве props?
Я не совсем уверен, что понимаю, что вы имеете в виду. Можно ли сделать <MyComponent aProp = {this.aClassProperty} />? Конечно.
@Tholle да, это именно то, что я имею в виду, спасибо





class MyClass { aClassProperty = <whatever_value>; } означает, что вы создаете новый свойство класса для каждого нового экземпляра класса. Свойство может иметь любое значение, но в этом случае свойство является стрелочной функцией, так что это правильно.
aMethod() используется всеми экземплярами класса, но в React вы обычно создаете новую функцию в конструкторе, в любом случае привязывая ее к this, поэтому конечный результат будет таким же.
Не могли бы вы подробнее рассказать, почему React рассматривает стрелочные функции как свойство?
@YashKaranke Это не конкретно для React, это как Выложено предложение JavaScript. Неважно, пишете ли вы = 2, = "2", = function() { ... } или даже = () => { ... }. Все они рассматриваются как свойства класса.
aClassProperty = () => { ... }означает, что вы создаете новое свойство класса для каждого нового экземпляра класса, а свойство является стрелочной функцией, так что это правильно.aMethod()используется всеми экземплярами класса, но в React вы обычно создаете новую функцию в конструкторе, в любом случае привязывая ее кthis, поэтому конечный результат будет таким же.