【问题标题】:What is the point of prefixing function names with '_' React/React-native ?用 '_' React/React-native 为函数名添加前缀有什么意义?
【发布时间】:2015-12-16 07:09:28
【问题描述】:

所以按照惯例,由于 JavaScript 没有访问修饰符,我必须在“私有”函数名称前加上下划线 (_)。但是我在这里有点困惑,比如说我正在用 C++ 或 Java 编写一个类,它有两个函数,一个执行内部计算,第二个返回内部计算的结果。

所以,我有这两个功能

performInternalSecretCalculation();
getResult();

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

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

【问题讨论】:

  • "应该是私有的,因为我不想让其他类担心该类如何处理计算" - 嗯,不,这不是你想要它的原因私人的。 all 方法的目的是隐藏实现。仅当您不希望其他人调用该方法(在您的情况下:触发计算)时,您才将其设为私有。
  • @Bergi “不应该担心”暗示我不希望其他类调用此方法,如果文本中不清楚,请见谅
  • 让我印象深刻的是“担心……如何”这个词——也许你想edit文本
  • 你能在你的 React 示例中展示一个代码示例吗?下划线是纯粹的约定,没有办法在经典的 OOP 意义上在 ES6 中实现私有访问修饰符,尽管有很多替代方案。但是,CustomClass.compute() 和在类中作用域的私有 compute() 函数是我们可以建议帮助的两种不同实现。
  • 如果可以的话,将私人候选人移出班级主体并使其成为模块范围。传递所有相关上下文数据以弥补类方法上的上下文丢失并不需要太多。

标签: javascript reactjs react-native


【解决方案1】:

这只是一种命名约定,被一些开发人员用于内部方法,以将它们与 react 的生命周期方法分开。

生命周期方法

  • 构造函数
  • getChildContext
  • 组件WillMount
  • componentDidMount
  • componentWillReceiveProps
  • 应该组件更新
  • componentWillUpdate
  • componentDidUpdate
  • componentWillUnmount

列表是从AirBnB Style Guide借来的。

Airbnb React/JSX 风格指南

我更喜欢Style Guide from AirBnB。他们建议不要使用下划线前缀。 相反,我强制为这些方法设置一个干净的顺序。

【讨论】:

  • React 生命周期方法只是少数,它们大多不会使组件代码膨胀太多。我也不喜欢下划线,将它们命名为与任何其他方法相同。为了便于阅读,我确实按字母顺序排列了这些方法。
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2016-12-26
  • 2016-04-11
相关资源
最近更新 更多