我应该对功能组件使用_myMethod吗?

New*_*Aid 3 reactjs react-hooks

最近,我在博客上看到了很多例子,其中React功能组件中的方法都带有下划线。我还在基于类的组件中看到了这一点,并被告知这意味着它们是私有的(?)。

但是功能组件内部功能已经是私有的,无法在组件外部访问,对吗?

例:


function MyComponent({ propOne }) {

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

Run Code Online (Sandbox Code Playgroud)

Jea*_*ark 6

Airbnb React / JSX样式指南(版本2019.05.24)实际上警告以下命名约定:

  • 不要在React组件的内部方法中使用下划线前缀。

为什么?下划线前缀有时在其他语言中用作约定,以表示隐私。但是,与那些语言不同,JavaScript没有对隐私的本地支持,所有内容都是公共的。无论您的意图是什么,在属性中添加下划线前缀实际上并不会使它们变为私有,并且任何属性(带或不带下划线前缀的属性)都应视为公开属性。有关更深入的讨论,请参见问题#1024#490

简而言之:

  • underscore表示private方法是从其他语言借来的。
  • 它不会改变方法本身。
  • 这表明该方法旨在private并阻止其使用。

是否遵循约定由您决定。没必要 如果遵循上面引用的样式指南,则不应该这样做。但是,这也取决于您与之共事的人/例如,公司是否使用带有下划线的样式指南来表示private属性。


该约定的另一种语言示例-Python。从命名约定

_single_leading_underscore

该约定用于声明私有变量,函数,方法和类。