【问题标题】:React Native types of functionsReact Native 类型的函数
【发布时间】:2020-06-26 01:51:37
【问题描述】:

我是 React Native 的新手,对于如何判断它是函数还是类感到非常困惑。据我所知,大写字母表示一个类?

请让我知道以下各项是什么以及它们的区别:

  1. const location = props => (...) 
    
  2. const Location() => {}
    
  3. function EventDetailScreen(props)
    
  4. handleOnPressEvent = event => {...}
    
  5. handleOnPressEvent = (event) => {...}
    

所有这些都让我很困惑。我知道const 是什么意思,但#1 有没有括号的道具(例如= ( props ) =>

#2 大写“L” #3 以function 开头,然后是大写的“E” #4 和 #5 一个带括号,另一个不带括号。

提前谢谢你:)

【问题讨论】:

    标签: javascript reactjs react-native


    【解决方案1】:

    好的,这是一个快速概述,但您需要查看一些文档或教程以获得对所有内容的更深入解释。

    就大写字母而言,javascript(这是您为 React Native 编写的脚本语言)不关心您是否使用大写、小写、camelCase、PascalCase 等。现在,它是区分大小写的,所以一旦你命名了一些你需要匹配大小写的东西(例如,funcName 不引用 FuncName)。在命名某物时使用什么大小写有共同的约定,但实际上没有任何规则。看看这里,了解一些常见约定的想法 (https://github.com/airbnb/javascript/tree/master/react#naming)。

    转到功能。首先,您询问函数与类,但只是为了让您知道这些示例都不是类。 (我们将忽略类在 js 中只是花哨的函数,因为它与此上下文无关)。

    您的示例中包含两种类型的函数。你有function expressions(这是你的“正常”功能)和arrow functions

    箭头函数是函数表达式的一种特殊的紧凑形式。它们非常紧凑,非常适合许多(但不是全部)事物。查看resources like this one 以充分了解差异。

    最后,回答您的具体问题:

    1. 这是一个箭头函数。只有一个参数的箭头函数不需要大括号。如果您有零个道具或多个参数,则确实需要大括号。所以= () =>= props =>= (props) =>= (props, others) => 都可以工作,但是= => = props, others => 无效。
    2. 因此,本例中 L 的大小写并没有真正的区别,这只是一个约定问题。但是,它是无效的,因为它没有 function 也没有箭头函数的第一个 =。正确的说法是 const Location = () => {}function Location = () => {}(作为常规函数)或 const Location = function locationFunction() {}(但在这种情况下,箭头函数可能不那么冗长)。
    3. 这是一个正常的函数表达式。大写是一个约定俗成的问题。
    4. 另一个箭头函数。没有括号,因为它只有一个参数,所以括号是可选的。
    5. 这是另一个箭头函数。此处包含括号,但不是必需的,因为只有一个 arg。

    请注意,在这些示例中,在函数声明之后使用大括号来保存函数的主体。这是正确的,但如果箭头函数正在运行单个命令或立即在同一行返回与声明相同的内容,则箭头函数可以省略大括号。

    例如:handleOnPressEvent = event => console.log(event) 不需要大括号。或twoPlus = (num) => 2 + num;

    相同
    twoPlus= (num) => {
     return 2 + num;
    }
    

    希望能稍微澄清一下。箭头函数和常规函数之间还有其他区别(函数和类之间还有更多区别),所以我建议您更具体地研究一下。

    干杯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2016-12-26
      • 2021-07-31
      • 2020-06-25
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多