Должен ли я использовать _myMethod для функциональных компонентов? - PullRequest
3 голосов
/ 23 июня 2019

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

Но внутренние функции функциональных компонентов уже закрыты и недоступны вне компонента, верно?

Пример:


function MyComponent({ propOne }) {

   const _getData() {
      /// why does this have an _underscore on it?
   }
   return (
        <div>a div</div>
    )
}

1 Ответ

5 голосов
/ 23 июня 2019

Это соглашение об именах, которое фактически предписывается в руководстве по стилю Airbnb React / JSX ( версия 2019.05.24 ):

  • Не используйте префикс подчеркивания для внутренних методов React компонент.

Почему? Подчеркнутые префиксы иногда используются в качестве соглашения на других языках для обозначения конфиденциальности. Но, в отличие от этих языков, в JavaScript нет встроенной поддержки конфиденциальности, все общедоступно. Независимо от ваших намерений, добавление префиксов подчеркивания к вашим свойствам фактически не делает их закрытыми, и любое свойство (с префиксом подчеркивания или нет) должно рассматриваться как общедоступное. Смотрите вопросы # 1024 и # 490 для более углубленного обсуждения.

Короче говоря:

  • Методы underscore для обозначения private заимствованы из других языков.
  • Он не меняет сам метод.
  • Это должно показать, что метод должен быть private и предотвратить его использование.

Вам решать, следовать ли соглашению или нет. Там нет необходимости. Если вы следуете руководству по стилю, указанному выше, вы не должны Однако это также зависит от людей, с которыми вы работаете, с. г. если компания использует руководство по стилю с подчеркиванием в начале для обозначения private свойств.


Пример этого соглашения на другом языке - Python. Из Соглашения о присвоении имен :

_single_leading_underscore

Это соглашение используется для объявления частных переменных, функций, методов и классов.

...