Почему функции стрелок в ReactJS рассматриваются как свойства? - PullRequest
0 голосов
/ 06 ноября 2018

Итак, я попробовал два разных подхода в соответствии с потребностями, то есть с функциями со стрелками и не стрелочными функциями, и во время написания кода я заметил что-то странное в обоих из них, функцию без стрелок, т.е.

  close() {
    this.setState({
      show: false
    });
  }

рассматриваются как метод (ы), который является истинным, поскольку они являются функциями, nonArrow

Но когда я пишу функцию Arrow, такую ​​как:

  goToNextPage = () => {
    this.setState(({ page }) => ({ page: page + 1 }));
  };

property

Это считается собственностью, я совершенно не понимаю этого поведения. Это что-то не так с VSCode или это совсем другое?

1 Ответ

0 голосов
/ 06 ноября 2018

class MyClass { aClassProperty = <whatever_value>; } означает, что вы создаете новое свойство класса для каждого нового экземпляра класса . Свойством может быть любое значение, которое вам нравится, но в этом случае это функция со стрелкой, поэтому она правильная.

aMethod() является общим для каждого экземпляра класса, но в React вы обычно создаете новую функцию в конструкторе, в любом случае связывая ее с this, поэтому конечный результат остается тем же.

...