This may be a very stupid question. But I was wondering if I should be using arrow function syntax or the classic function syntax for react components now or is this purely a style choice. I ask this purely as someone trying to work towards industry standards but have found a tremendous amount of mixed comments on it. Also is there any difference using typescript?

Example: const foo = () => {}

Or

function foo() {}

  • 𝕊𝕚𝕤𝕪𝕡𝕙𝕖𝕒𝕟
    link
    fedilink
    arrow-up
    13
    ·
    edit-2
    2 years ago

    Not a stupid question at all.

    Other than the syntax, there is a very important functional difference between the two: function definitions are hoisted, consts are not. What this means in practice is that you can use a function you define later in the file if it’s defined using the function f() { ... } syntax, but const f = () => { ... } functions can only be used after their definitions.

    function f() { g() } // OK
    function g() {}
    
    const f = () => { g() } // Error
    const g = () => {}
    

    Personally, I like breaking up React components into smaller helper subcomponents and use them in a main component. I only export the main component, the helpers are private to the module. For better readability, I like the main component to be at the top of the file and then put the helpers in decreasing order of complexity. This style is only possible with classic function definitions, using consts forces you to use bottom-up instead of top-down order.

    • CasallasOP
      link
      fedilink
      arrow-up
      2
      ·
      2 years ago

      Thank you! I remember reading a bit about this but clearly it didn’t stick! Thank you for the awesome explanation!