JS-201-ReactFundamentals
  • Part 0: App Overview
  • Part 1: Intro to React
    • 1.0: Packages Setup
    • 1.1: Project Setup
    • 1.2: React Router Dom
  • Part 2: JavaScript Concepts
    • 2.0: ES6 Overview
    • 2.1: classes
    • 2.2: constructors
    • 2.3: extends
    • 2.4: super
    • 2.5: interpolation
    • 2.6: map
    • 2.7: filter
  • Part 3: Functional Components
    • 3.0: Functional Components Overview
    • 3.1: Calling Functional Components
    • 3.2: Single Element Rule
    • 3.3: Arrow Functions
    • 3.4: Challenge
    • 3.4: Solution
    • 3.5: Challenge 2
    • 3.5: Solution 2
  • Part 4: JSX Challenge
    • 4.1: JSX Overview
    • 4.1: Challenge Answer
    • 4.2: className
  • Part 5: Class Concepts
    • 5.1: State
    • 5.2: setState
    • 5.3: Class Components Challenge
    • 5.4: Class Components Challenge Answer
  • Part 6: Props Starter
    • 6.0: Props Overview
    • 6.1: Props Demo and Challenge 1
    • 6.2: Props Answer 2
    • 6.3: Props Passing Functions and Challenge 2
    • 6.4: Props Answer 2
    • 6.5: External Props and Mapping Components
    • 6.6: PropTypes
  • Part 7: Lifecycle Methods
    • 7.0: Lifecycle Overview
    • 7.1: Lifecycle Methods
    • 7.2: Mounting Methods
    • 7.3: Update Methods
    • 7.4: Unmount Methods
  • Part 8: Apps
    • 1.0 - Small Timer Apps
      • 1.1 - Simple Timer
      • 1.2 - Clock App
      • 1.3 - Stop Watch App
      • 1.4 - Challenge
    • 2.0 - Concept List
      • 2.1 - Concept Data
      • 2.2 - Concept App Component
      • 2.3 - Concept Component
      • 2.4 - Concept List Component
    • 3.0 - NYT
      • 3.1 - NytApp Component
      • 3.2 - Nyt Results
    • 4.0 - The Friend List App
      • 4.1 - Friend List App Component
      • 4.2 - Friend Component
    • 5.0 - Movie Search Application
      • 5.1 - Form Component
      • 5.2 - Form Results Component
      • 5.3 - Styled Components
    • 6.0 - YouTube Api
      • 6.1 - Video Component
      • 6.2 - Video Component
      • 6.3 - Video Component
    • 7.0 - Github Api Application
      • 7.1 - The Users
      • 7.2 - Github API Component
      • 7.3 - Github API Card
      • 7.4 - Github API Card Form
      • 7.5 - Github API Card List
      • 7.6 - Github API Search
      • 7.7 - Github API Challenge
    • 8.0 - Bitcoin Api Application
      • 8.1 - Bitcoin API Setup
      • 8.2 - Bitcoin API Fetch
      • 8.3 - Bitcoin API Line Chart
      • 8.4 - Bitcoin API Fetching Data
      • 8.5 - Bitcoin API Info Box
      • 8.6 - Bitcoin API Completed Code
    • 9.0 - Google Maps Api Challenge
    • 10.0 - Sound Cloud App Challenge
    • 11.0 - VR App Challenge
    • 12.0 - React Native Intro
  • Part 9: Project
  • Part 10: Notes
    • 10.1 - Resources
    • 10.2 - Troubleshooting
Powered by GitBook
On this page
  • Arrow Syntax Answer
  • Answer discussion
  1. Part 3: Functional Components

3.3: Arrow Functions

Previous3.2: Single Element RuleNext3.4: Challenge

Last updated 7 years ago

Arrow functions are incredibly common in React. It's important for you to know how they work.

Again, we recommend taking a through the documentation, if you haven't already. Some of the points below are cherry picked from there. Some points, like the 'this' keyword, we'll be discussing later.

Arrow Syntax Answer

Again, it is very common to see the Fat Arrow / Arrow Function syntax used with React, especially in Functional Components. The Fat Arrow provides a more terse and compact approach to writing a function, and React, while often verbose, strives to make things more compact. It's important to note that the Fat Arrow is part of ES6, plain old JS, which brings up a great point: You can (and will) often write plain JavaScript with React.

So here is the answer to writing the Component in arrow syntax:

import React from 'react';

const FunctionalComponentDemo = () => {
    return (
        <div className="main">
            <div className="mainDiv">
                <div>
                    Hello React
                </div>
                <div>
                    How are you today?
                </div>
            </div>
        </div>
    );
};

export default FunctionalComponentDemo;

Answer discussion

If you don't understand what's going on, step away from your project for a second and have a look at this example. Just so you know, this is in vanilla JavaScript, not React specific:

Here's a regular JS function:

var add = function(x, y){
    return x + y;
}

Here is that same function written with Arrow Syntax:

var add = (x, y) => x + y;

Notice in the above code, we don't have to use the 'return' keyword. It's implicitly added when there is a one line/expression in the body of the function.

Let's see another example, same thing straight from the MDN docs.

// concise body syntax, implied "return"
var func = x => x * x;                  

// with block body, explicit "return" needed
var func = (x, y) => { return x + y; };

Consider the following example where the first and second version of the function are the same.

let greetUser = username => `Hello, ${username}!`;
let greetUserSecondVersion = username => { return `Hello ${username}!` };
console.log(greetUser('Kenn') === greetUserSecondVersion('Kenn')); // true

Here is a simple version that represents the syntax of our React Component.

var function = () => {
    console.log("Hello React");
}

Make sense? If it doesn't, we recommend more practice. You can't read React without knowing this concept.

Let's go on to the next module.

read