38
React 101 @ssaunier

Le Wagon - React 101

Embed Size (px)

Citation preview

Page 1: Le Wagon - React 101

React 101

@ssaunier

Page 2: Le Wagon - React 101

React?

A JavaScript library used to build HTML

Page 3: Le Wagon - React 101

Setup

You need JavaScript in your terminal

Page 4: Le Wagon - React 101

Setup

You need a dependency manager

or

Page 5: Le Wagon - React 101

Quick Start

yarn global add create-react-app

npm install -g create-react-app

or

Page 6: Le Wagon - React 101

Boilerplate

Page 7: Le Wagon - React 101

Create an app

cd ~/code/lewagon create-react-app airbnb-clone cd airbnb-clone yarn start # or npm start

Page 8: Le Wagon - React 101

Structure

Page 9: Le Wagon - React 101

Our first Component

Page 10: Le Wagon - React 101

First Component

mkdir src/components touch src/components/hello.js

Page 11: Le Wagon - React 101

First Component

1. Import React

2. Define component

3. Implement render

4. Export component

Page 12: Le Wagon - React 101

First Component

1. Import React

2. Define component

3. Implement render

4. Export component

Page 13: Le Wagon - React 101

First Component

1. Import React

2. Define component

3. Implement render

4. Export component

Page 14: Le Wagon - React 101

First Component

1. Import React

2. Define component

3. Implement render

4. Export component

Page 15: Le Wagon - React 101

Render it!

Page 16: Le Wagon - React 101

props

Page 17: Le Wagon - React 101
Page 18: Le Wagon - React 101

Planning

Page 19: Le Wagon - React 101

This is what we want to build:

Page 20: Le Wagon - React 101

What are the components?

Page 21: Le Wagon - React 101

What are the components?

App

Flat

Map

Marker

Page 22: Le Wagon - React 101

Flat

Page 23: Le Wagon - React 101

<div class="flat"> <div class="flat-picture"></div> <div class="flat-title"></div> </div>

Flat Component

Page 24: Le Wagon - React 101

Flexbox

<div class="app"> <div class="main"> <div class="search"> </div> <div class="flats"> </div> </div> <div class="map"> </div> </div>

.app { display: flex; } .main { flex-basis: 60%; display: flex; flex-direction: column; } .map { flex-grow: 1; height: 100vh; top: 0; position: sticky; }

Page 25: Le Wagon - React 101

Flexbox

<div class="flats"> <div class="flat"></div> <div class="flat"></div> <div class="flat"></div> <div class="flat"></div> </div>

.flats { display: flex; flex-wrap: wrap; align-content: flex-start; }

.flat { flex-basis: calc(50% - 20px); margin: 10px; }

Page 26: Le Wagon - React 101

React State

Page 28: Le Wagon - React 101

Source

github.com/lewagon/flats-boilerplate

Page 30: Le Wagon - React 101

Map + Marker(s)

Page 31: Le Wagon - React 101

Google Map React

Page 32: Le Wagon - React 101

Event

Page 33: Le Wagon - React 101

Flat

What should happen when clicking on a flat picture?

Page 34: Le Wagon - React 101

Controlled Component

Page 35: Le Wagon - React 101

Search

<input type="text" placeholder="Search..." value={this.state.search} onChange={this.handleSearch} />

Page 36: Le Wagon - React 101

Thanks!