React JS Notes for Professionals

GoalKicker.com (CC BY-SA)
Page 1 sur 110Lecteur de document UniversityLib

React JS Notes for Professionals

Programming, ReactJS, TypeScript · notes

Voir tous les documents en développement web

React JS

Notes for Professionals

React JS

Notes for Professionals

100+ pages

of professional hints and tricks

GoalKicker.com

Free Programming Books

Disclaimer

This is an unocial free book created for educational purposes and is

not aliated with ocial React JS group(s) or company(s).

All trademarks and registered trademarks are

the property of their respective owners

Contents

About

...................................................................................................................................................................................

1

Chapter 1: Getting started with React

...............................................................................................................

2

........................................................................................................................................

..................................................................................................................................

.......................................................................................................

.............................................................................

5

Section 1.1: What is ReactJS?

Section 1.2: Installation or Setup

Section 1.3: Hello World with Stateless Functions

Section 1.4: Absolute Basics of Creating Reusable Components

Section 1.5: Create React App

Section 1.6: Hello World

Section 1.7: Hello World Component

......................................................................................................................................

.................................................................................................................................................

...........................................................................................................................

Chapter 2: Components

...........................................................................................................................................

11

.............................................................................................................................

...................................................................................................................................

..............................................................................................................................

........................................................................................................................................................

Section 2.1: Creating Components

Section 2.2: Basic Component

Section 2.3: Nesting Components

Section 2.4: Props

Section 2.5: Component states - Dynamic user-interface

Section 2.6: Variations of Stateless Functional Components

Section 2.7: setState pitfalls

......................................................................................

.................................................................................

19

.......................................................................................................................................

20

Chapter 3: Using ReactJS with TypeScript

....................................................................................................

22

Section 3.1: ReactJS component written in TypeScript

Section 3.2: Installation and Setup

Section 3.3: Stateless React Components in TypeScript

Section 3.4: Stateless and property-less Components

...........................................................................................

............................................................................................................................

.........................................................................................

23

............................................................................................

Chapter 4: State in React

Section 4.1: Basic State

Section 4.2: Common Antipattern

Section 4.3: setState()

Section 4.4: State, Events And Managed Controls

......................................................................................................................................

...............................................................................................................................................

.............................................................................................................................

.................................................................................................................................................

...................................................................................................

28

......................................................................................................................................

..............................................................................................................................................

..........................................................................................................................................

...............................................................................................................................................

Chapter 5: Props in React

Section 5.1: Introduction

Section 5.2: Default props

Section 5.3: PropTypes

Section 5.4: Passing down props using spread operator

Section 5.5: Props.children and component composition

Section 5.6: Detecting the type of Children components

.......................................................................................

.......................................................................................

33

........................................................................................

34

Chapter 6: React Component Lifecycle

..........................................................................................................

35

Section 6.1: Component Creation

Section 6.2: Component Removal

Section 6.3: Component Update

Section 6.4: Lifecycle method call in dierent states

Section 6.5: React Component Container

...............................................................................................................................

.............................................................................................................................

................................................................................................................................

..............................................................................................

39

.................................................................................................................

40

Chapter 7: Forms and User Input

.......................................................................................................................

42

Section 7.1: Controlled Components

Section 7.2: Uncontrolled Components

..........................................................................................................................

42

.....................................................................................................................

42

Chapter 8: React Boilerplate [React + Babel + Webpack]

...................................................................

44

Section 8.1: react-starter project

Section 8.2: Setting up the project

...............................................................................................................................

44

.............................................................................................................................

45

2

3

4

6

7

8

11

13

14

16

17

22

22

24

25

25

25

26

30

30

30

Publicité

31

32

35

37

38

Chapter 9: Using ReactJS with jQuery

.............................................................................................................

48

Section 9.1: ReactJS with jQuery

................................................................................................................................

48

Chapter 10: React Routing

.....................................................................................................................................

50

Section 10.1: Example Routes.js file, followed by use of Router Link in component

Section 10.2: React Routing Async

............................................................................................................................

.............................................

50

51

Chapter 11: Communicate Between Components

......................................................................................

52

Section 11.1: Communication between Stateless Functional Components

............................................................

52

Chapter 12: How to setup a basic webpack, react and babel environment

................................

54

Section 12.1: How to build a pipeline for a customized "Hello world" with images

...............................................

54

Chapter 13: React.createClass vs extends React.Component

.............................................................

58

......................................................................................................................

..........................................................................................................................................

...............................................................................................

Section 13.1: Create React Component

Section 13.2: "this" Context

Section 13.3: Declare Default Props and PropTypes

Section 13.4: Mixins

Section 13.5: Set Initial State

Section 13.6: ES6/React “this” keyword with ajax to get data from server

......................................................................................................................................................

.......................................................................................................................................

...........................................................

63

Chapter 14: React AJAX call

Section 14.1: HTTP GET request

Section 14.2: HTTP GET request and looping through data

Section 14.3: Ajax in React without a third party library - a.k.a with VanillaJS

..................................................................................................................................

..................................................................................................................................

...................................................................................

.....................................................

66

Chapter 15: Communication Between Components

..................................................................................

68

Section 15.1: Child to Parent Components

Section 15.2: Not-related Components

Section 15.3: Parent to Child Components

.................................................................................................................

.....................................................................................................................

................................................................................................................

69

Chapter 16: Stateless Functional Components

............................................................................................

71

Section 16.1: Stateless Functional Component

..........................................................................................................

71

Chapter 17: Performance

........................................................................................................................................

74

Section 17.1: Performance measurement with ReactJS

Section 17.2: React's di algorithm

Section 17.3: The Basics - HTML DOM vs Virtual DOM

Section 17.4: Tips & Tricks

............................................................................................................................

............................................................................................

...........................................................................................................................................

..........................................................................................

74

Chapter 18: Introduction to Server-Side Rendering

.................................................................................

77

Section 18.1: Rendering components

.........................................................................................................................

77

Chapter 19: Setting Up React Environment

...................................................................................................

78

Section 19.1: Simple React Component

Section 19.2: Install all dependencies

Section 19.3: Configure webpack

Section 19.4: Configure babel

Section 19.5: HTML file to use react component

Section 19.6: Transpile and bundle your component

.....................................................................................................................

........................................................................................................................

...............................................................................................................................

.....................................................................................................................................

......................................................................................................

..............................................................................................

79

58

58

60

62

62

65

65

66

68

68

74

75

76

78

78

78

79

79

Chapter 20: Using React with Flow

....................................................................................................................

80

Section 20.1: Using Flow to check prop types of stateless functional components

Section 20.2: Using Flow to check prop types

.........................................................................................................

80

.............................................

80

Chapter 21: JSX

............................................................................................................................................................

81

Section 21.1: Props in JSX

Section 21.2: Children in JSX

Chapter 22: React Forms

............................................................................................................................................

81

.......................................................................................................................................

82

........................................................................................................................................

85

Section 22.1: Controlled Components

Publicité

........................................................................................................................

85

87

87

88

88

92

92

Chapter 23: User interface solutions

................................................................................................................

87

Section 23.1: Basic Pane

Section 23.2: Panel

Section 23.3: Tab

Section 23.4: PanelGroup

Section 23.5: Example view with PanelGroups

..............................................................................................................................................

......................................................................................................................................................

.........................................................................................................................................................

............................................................................................................................................

.......................................................................................................

89

Chapter 24: Using ReactJS in Flux way

...........................................................................................................

91

Section 24.1: Data Flow

...............................................................................................................................................

91

Chapter 25: React, Webpack & TypeScript installation

.........................................................................

92

Section 25.1: webpack.config.js

Section 25.2: tsconfig.json

Section 25.3: My First Component

..................................................................................................................................

..........................................................................................................................................

.............................................................................................................................

93

Chapter 26: How and why to use keys in React

..........................................................................................

94

Section 26.1: Basic Example

Chapter 27: Keys in react

........................................................................................................................................

94

.......................................................................................................................................

95

Section 27.1: Using the id of an element

Section 27.2: Using the array index

...................................................................................................................

95

...........................................................................................................................

95

Chapter 28: Higher Order Components

..........................................................................................................

97

Section 28.1: Higher Order Component that checks for authentication

Section 28.2: Simple Higher Order Component

.......................................................................................................

98

................................................................

97

Chapter 29: React with Redux

Section 29.1: Using Connect

Appendix A: Installation

Section A.1: Simple setup

Section A.2: Using webpack-dev-server

..............................................................................................................................

99

.......................................................................................................................................

99

.........................................................................................................................................

..........................................................................................................................................

100

100

.................................................................................................................

101

Appendix B: React Tools

.......................................................................................................................................

103

Section B.1: Links

.......................................................................................................................................................

103

Credits

............................................................................................................................................................................

104

You may also like

......................................................................................................................................................

106

About

Please feel free to share this PDF with anyone for free,

latest version of this book can be downloaded from:

https://goalkicker.com/ReactJSBook

This React JS Notes for Professionals book is compiled from Stack Overflow

Documentation, the content is written by the beautiful people at Stack Overflow.

Text content is released under Creative Commons BY-SA, see credits at the end

of this book whom contributed to the various chapters. Images may be copyright

of their respective owners unless otherwise specified

This is an unofficial free book created for educational purposes and is not

affiliated with official React JS group(s) or company(s) nor Stack Overflow. All

trademarks and registered trademarks are the property of their respective

company owners

The information presented in this book is not guaranteed to be correct nor

accurate, use at your own risk

Please send feedback and corrections to [email protected]

GoalKicker.com – React JS Notes for Professionals

1

Chapter 1: Getting started with React

Version Release Date

0.3.0

2013-05-29

0.4.0

0.5.0

0.8.0

0.9.0

2013-07-17

2013-10-16

2013-12-19

2014-02-20

0.10.0

2014-03-21

0.11.0

2014-07-17

0.12.0

2014-10-28

0.13.0

2015-03-10

0.14.0

2015-10-07

15.0.0

2016-04-07

15.1.0

2016-05-20

15.2.0

2016-07-01

15.2.1

2016-07-08

15.3.0

2016-07-29

15.3.1

2016-08-19

15.3.2

2016-09-19

15.4.0

2016-11-16

15.4.1

2016-11-23

Publicité

15.4.2

2017-01-06

15.5.0

2017-04-07

15.6.0

2017-06-13

15.6.1

2017-06-14

15.6.2

2017-09-25

16.0.0

2017-09-26

16.1.0

2017-11-09

16.1.1

2017-11-13

16.3.0

2018-03-29

16.3.1

2018-04-03

16.3.2

2018-04-16

Section 1.1: What is ReactJS?

ReactJS is an open-source, component based front end library responsible only for the view layer of the

application. It is maintained by Facebook.

ReactJS uses virtual DOM based mechanism to fill in data (views) in HTML DOM. The virtual DOM works fast owning

to the fact that it only changes individual DOM elements instead of reloading complete DOM every time

A React application is made up of multiple components, each responsible for outputting a small,

reusable piece of HTML. Components can be nested within other components to allow complex

applications to be built out of simple building blocks. A component may also maintain internal state - for

example, a TabList component may store a variable corresponding to the currently open tab.

GoalKicker.com – React JS Notes for Professionals

2

React allows us to write components using a domain-specific language called JSX. JSX allows us to write our

components using HTML, whilst mixing in JavaScript events. React will internally convert this into a virtual DOM, and

will ultimately output our HTML for us.

React "reacts" to state changes in your components quickly and automatically to rerender the components in the

HTML DOM by utilizing the virtual DOM. The virtual DOM is an in-memory representation of an actual DOM. By

doing most of the processing inside the virtual DOM rather than directly in the browser's DOM, React can act

quickly and only add, update, and remove components which have changed since the last render cycle occurred.

Section 1.2: Installation or Setup

ReactJS is a JavaScript library contained in a single file react-<version>.js that can be included in any HTML page.

People also commonly install the React DOM library react-dom-<version>.js along with the main React file:

Basic Inclusion

<!DOCTYPE html>

<html>

<head></head>

<body>

<script type="text/javascript" src="/path/to/react.js"></script>

<script type="text/javascript" src="/path/to/react-dom.js"></script>

<script type="text/javascript">

// Use react JavaScript code here or in a separate file

</script>

</body>

</html>

To get the JavaScript files, go to the installation page of the official React documentation.

React also supports JSX syntax. JSX is an extension created by Facebook that adds XML syntax to JavaScript. In order

to use JSX you need to include the Babel library and change <script type="text/javascript"> to <script

type="text/babel"> in order to translate JSX to Javascript code.

<!DOCTYPE html>

<html>

<head></head>

<body>

<script type="text/javascript" src="/path/to/react.js"></script>

<script type="text/javascript" src="/path/to/react-dom.js"></script>

<script src="https://npmcdn.com/[email protected]/browser.min.js"></script>

<script type="text/babel">

// Use react JSX code here or in a separate file

</script>

</body>

</html>

Installing via npm

You can also install React using npm by doing the following:

npm install --save react react-dom

To use React in your JavaScript project, you can do the following:

var React = require('react');

var ReactDOM = require('react-dom');

GoalKicker.com – React JS Notes for Professionals

3

ReactDOM.render(<App />, ...);

Installing via Yarn

Facebook released its own package manager named Yarn, which can also be used to install React. After installing

Yarn you just need to run this command:

yarn add react react-dom

You can then use React in your project in exactly the same way as if you had installed React via npm.

Section 1.3: Hello World with Stateless Functions

Stateless components are getting their philosophy from functional programming. Which implies that: A function

returns all time the same thing exactly on what is given to it.

For example:

const statelessSum = (a, b) => a + b;

let a = 0;

const statefulSum = () => a++;

As you can see from the above example that, statelessSum is always will return the same values given a and b.

However, statefulSum function will not return the same values given even no parameters. This type of function's

behaviour is also called as a side-effect. Since, the component affects somethings beyond.

So, it is advised to use stateless components more often, since they are side-effect free and will create the same

behaviour always. That is what you want to be after in your apps because fluctuating state is the worst case

scenario for a maintainable program.

The most basic type of react component is one without state. React components that are pure functions of their

props and do not require any internal state management can be written as simple JavaScript functions. These are

said to be Stateless Functional Components because they are a function only of props, without having any state

to keep track of.

Here is a simple example to illustrate the concept of a Stateless Functional Component:

// In HTML

<div id="element"></div>

// In React

const MyComponent = props => {

return <h1>Hello, {props.name}!</h1>;

};

ReactDOM.render(<MyComponent name="Arun" />, element);

// Will render <h1>Hello, Arun!</h1>

Note that all that this component does is render an h1 element containing the name prop. This component doesn't

keep track of any state. Here's an ES6 example as well:

import React from 'react'

const HelloWorld = props => (

<h1>Hello, {props.name}!</h1>

)

GoalKicker.com – React JS Notes for Professionals

4

HelloWorld.propTypes = {

name: React.PropTypes.string.isRequired

}

export default HelloWorld

Since these components do not require a backing instance to manage the state, React has more room for

optimizations. The implementation is clean, but as of yet no such optimizations for stateless components have

been implemented.

Section 1.4: Absolute Basics of Creating Reusable

Components

Components and Props

As React concerns itself only with an application's view, the bulk of development in React will be the creation of

components. A component represents a portion of the view of your application. "Props" are simply the attributes

used on a JSX node (e.g. <SomeComponent someProp="some prop's value" />), and are the primary way our

application interacts with our components. In the snippet above, inside of SomeComponent, we would have access

to this.props, whose value would be the object {someProp: "some prop's value"}.

It can be useful to think of React components as simple functions - they take input in the form of "props", and

produce output as markup. Many simple components take this a step further, making themselves "Pure Functions",

meaning they do not issue side effects, and are idempotent (given a set of inputs, the component will always

produce the same output). This goal can be formally enforced by actually creating components as functions, rather

than "classes". There are three ways of creating a React component:

Functional ("Stateless") Components

const FirstComponent = props => (

<div>{props.content}</div>

);

React.createClass()

const SecondComponent = React.createClass({

render: function () {

return (

Publicité

<div>{this.props.content}</div>

);

}

});

ES2015 Classes

class ThirdComponent extends React.Component {

render() {

return (

<div>{this.props.content}</div>

);

}

}

These components are used in exactly the same way:

const ParentComponent = function (props) {

const someText = "FooBar";

GoalKicker.com – React JS Notes for Professionals

5

return (

<FirstComponent content={someText} />

<SecondComponent content={someText} />

<ThirdComponent content={someText} />

);

}

The above examples will all produce identical markup.

Functional components cannot have "state" within them. So if your component needs to have a state, then go for

class based components. Refer Creating Components for more information.

As a final note, react props are immutable once they have been passed in, meaning they cannot be modified from

within a component. If the parent of a component changes the value of a prop, React handles replacing the old

props with the new, the component will rerender itself using the new values.

See Thinking In React and Reusable Components for deeper dives into the relationship of props to components.

Section 1.5: Create React App

create-react-app is a React app boilerplate generator created by Facebook. It provides a development environment

configured for ease-of-use with minimal setup, including:

ES6 and JSX transpilation

Dev server with hot module reloading

Code linting

CSS auto-prefixing

Build script with JS, CSS and image bundling, and sourcemaps

Jest testing framework

Installation

First, install create-react-app globally with node package manager (npm).

npm install -g create-react-app

Then run the generator in your chosen directory.

create-react-app my-app

Navigate to the newly created directory and run the start script.

cd my-app/

npm start

Configuration

create-react-app is intentionally non-configurable by default. If non-default usage is required, for example, to use a

compiled CSS language such as Sass, then the eject command can be used.

npm run eject

This allows editing of all configuration files. N.B. this is an irreversible process.

Alternatives

GoalKicker.com – React JS Notes for Professionals

6

Alternative React boilerplates include:

enclave

nwb

motion

rackt-cli

budō

rwb

quik

sagui

roc

Build React App

To build your app for production ready, run following command

npm run build

Section 1.6: Hello World

Without JSX

Here's a basic example that uses React's main API to create a React element and the React DOM API to render the

React element in the browser.

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>Hello React!</title>

<!-- Include the React and ReactDOM libraries -->

<script src="https://fb.me/react-15.2.1.js"></script>

<script src="https://fb.me/react-dom-15.2.1.js"></script>

</head>

<body>

<div id="example"></div>

<script type="text/javascript">

// create a React element rElement

var rElement = React.createElement('h1', null, 'Hello, world!');

// dElement is a DOM container

var dElement = document.getElementById('example');

// render the React element in the DOM container

ReactDOM.render(rElement, dElement);

</script>

</body>

</html>

With JSX

GoalKicker.com – React JS Notes for Professionals

7

Instead of creating a React element from strings one can use JSX (a Javascript extension created by Facebook for

adding XML syntax to JavaScript), which allows to write

var rElement = React.createElement('h1', null, 'Hello, world!');

as the equivalent (and easier to read for someone familiar with HTML)

var rElement = <h1>Hello, world!</h1>;

The code containing JSX needs to be enclosed in a <script type="text/babel"> tag. Everything within this tag will

be transformed to plain Javascript using the Babel library (that needs to be included in addition to the React

libraries).

So finally the above example becomes:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8" />

<title>Hello React!</title>

<!-- Include the React and ReactDOM libraries -->

<script src="https://fb.me/react-15.2.1.js"></script>

<script src="https://fb.me/react-dom-15.2.1.js"></script>

<!-- Include the Babel library -->

<script src="https://npmcdn.com/[email protected]/browser.min.js"></script>

</head>

<body>

<div id="example"></div>

<script type="text/babel">

// create a React element rElement using JSX

var rElement = <h1>Hello, world!</h1>;

// dElement is a DOM container

var dElement = document.getElementById('example');

// render the React element in the DOM container

ReactDOM.render(rElement, dElement);

</script>

</body>

</html>

Section 1.7: Hello World Component

A React component can be defined as an ES6 class that extends the base React.Component class. In its minimal

form, a component must define a render method that specifies how the component renders to the DOM. The

render method returns React nodes, which can be defined using JSX syntax as HTML-like tags. The following

example shows how to define a minimal Component:

import React from 'react'

class HelloWorld extends React.Component {

render() {

GoalKicker.com – React JS Notes for Professionals

8

return <h1>Hello, World!</h1>

}

}

export default HelloWorld

A Component can also receive props. These are properties passed by its parent in order to specify some values the

component cannot know by itself; a property can also contain a function that can be called by the component after

certain events occur - for example, a button could receive a function for its onClick property and call it whenever it

is clicked. When writing a component, its props can be accessed through the props object on t...