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
  • Functional Components
  • Directory Setup
  • Functional Component Example
  1. Part 3: Functional Components

3.0: Functional Components Overview

Hopefully, you noticed that we have separate files for Header, Footer, Sidebar, and Resources. These are all known as components in React. Components are individual pieces of the User Interface that can be altered independently of one another.

There are two types of components: "Functional Components" and "Class Components". In this project, we'll start by talking about and working with "Functional Components".

Functional Components

Functional components have the following capabilities/traits:

  • Rendering of information without using or changing state.

  • Known as presentational components.

  • Often used for simple chunks of code.

  • No 'this' keyword. Class components use 'this' extensively.

  • Known as dumb components.

  • Often used as child components that will receive 'props' (aka properties) from a Class Component (parent).

Directory Setup

In the components folder set up a concepts folder and a FunctionalComponentDemo.js file:

    └── src
        └── assets
        └── components
         +      └── concepts
         +            └── FunctionalComponentDemo.js
                └── site

Rule: Component names must be capitalized, and they generally are Pascal cased. This means that all separate words have capital letters.

Functional Component Example

Let's create a simple functional component in the FunctionalComponentDemo.js file. At this point you probably want to start typing (instead of copying and pasting) so that you can get a good feel for the React keystrokes and syntax. Add the following:

import React from 'react';

const FunctionalComponentDemo = function () {
    return (

    );
};

You should see an error at this point. Why? If you hover over the error, it should say Expression expected. Because a functional component is a function that should return something. Let's do that:

import React from 'react';

const FunctionalComponentDemo = function () {
    return (
 +       <div>
 +           Hello React
 +       </div>
    );
};

Here we added a few lines that appear to be a simple bit of HTML. However, they are actually something called JSX, which we'll talk about in a future module. For now, assume that it's working just like HTML.

For the component to work, we need to export it. See the bottom line:

import React from 'react';

const FunctionalComponentDemo = function () {
    return (
       <div>
            Hello React
       </div>
    );
};

+ export default FunctionalComponentDemo;

We now have a component that can be used in our application that will render to the dom.

Run the app. Does it work? It shouldn't have any change at this point. Why is this? Well, we need to call the component. Let's discuss that next.

PreviousPart 3: Functional ComponentsNext3.1: Calling Functional Components

Last updated 7 years ago