Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在函数名前面加上'_';反应/反应本族语?_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript 在函数名前面加上'_';反应/反应本族语?

Javascript 在函数名前面加上'_';反应/反应本族语?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,所以按照惯例,由于JavaScript没有访问修饰符,所以我必须在“private”函数名前面加下划线(551;)。但是我有点困惑,我写的是C++或java中的一个类,它有两个函数,一个执行内部计算,另一个返回内部计算结果。p> 我有这两个函数 performInternalSecretCalculation(); getResult(); performingternalsecretcalculation()应该是私有的,因为我不希望其他类担心该类如何处理计算,因此我不导出此函数。而getR

所以按照惯例,由于JavaScript没有访问修饰符,所以我必须在“private”函数名前面加下划线(551;)。但是我有点困惑,我写的是C++或java中的一个类,它有两个函数,一个执行内部计算,另一个返回内部计算结果。p> 我有这两个函数

performInternalSecretCalculation();
getResult();
performingternalsecretcalculation()
应该是私有的,因为我不希望其他类担心该类如何处理计算,因此我不导出此函数。而
getResult()
是其他类将使用的东西,因此我将其公开并导出此函数


但是对于React类,我没有导出任何函数,React类中定义的所有函数都在其中使用。那么,区别是什么呢?什么时候应该在函数名前加下划线?

这只是一种命名约定,一些开发人员将其用于内部方法,以将其与函数的生命周期方法分开

生命周期方法
  • 建造师
  • getChildContext
  • 组件将安装
  • 组件安装
  • 组件将接收道具
  • 应该更新组件吗
  • 组件将更新
  • 组件更新
  • 组件将卸载
这张表是从图书馆借来的

Airbnb React/JSX风格指南 我更喜欢这个。他们建议不要使用下划线前缀。
相反,我强制方法的顺序是干净的。

“应该是私有的,因为我不想让其他类担心该类如何处理计算”-嗯,不,这不是你想将其私有化的原因。所有方法的目的都是隐藏实现。只有当您不希望其他人调用该方法(在您的情况下:触发计算)时,才将其设置为私有。@Bergi“不应该担心”意味着我不希望其他类调用该方法,抱歉,如果文本中不清楚,那么是“担心…如何”一词这让我很震惊-也许你想看看文本你能在你的React示例中显示一个代码示例吗?下划线是纯粹的约定,在经典的OOP意义上,ES6中没有实现私有访问修饰符的方法,尽管有很多替代方法。但是,
CustomClass.compute()
和类内作用域的私有
compute()
函数是两种不同的实现,我们可以建议您提供帮助。如果可以,请将私有候选对象移出类主体,并使其成为模块作用域。传递所有相关的上下文数据来弥补类方法上上下文的丢失并不需要太多。React生命周期方法只是少数,它们大多不会对组件代码造成太大的膨胀。我也不喜欢下划线,它们的命名方式与其他方法相同。为了便于阅读,我将这些方法按字母顺序排列。