48
EINFÜHRUNG IN REACT.JS UND REDUX

EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINFÜHRUNG IN REACT.JSUND REDUX

Page 2: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REACT.JSEINE JAVASCRIPT LIBRARY ZUM ERSTELLEN VON USER INTERFACES

Nur die UIVirtual DOMData Flow

Page 3: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

DATA FLOWUnidirektional ohne Event-Chaos

Page 4: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

http://www.wikihow.com/Image:Make-Spaghetti-Step-1.jpg

https://www.�ickr.com/photos/spilt-milk/5829575950

Page 5: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM
Page 6: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM
Page 7: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM
Page 8: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REACT DATA FLOW

Page 9: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VIRTUAL DOMEf�zientes UI-Rendering inklusive

Page 10: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ÄNDERUNGEN AUF DER UI - WAS TUN?Alles neuzeichnen? Flackert!

DOM manipulieren? Mühsam!

Page 11: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VIRTUAL DOMEntwickler beschreibt das vollständige Resultat

React aktualisiert den DOM mit minimalen Änderungen

Page 12: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

NUR DIE UIModel ist kein Bestandteil von React

Kann beliebig implementiert werden

Page 13: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTE

Page 14: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 15: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 16: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 17: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 18: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 19: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return React.createElement('p', null, 'Hello World!'); } }

Page 20: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTEimport React, { Component } from "react";

class HelloWorld extends Component {

render() { return <p>Hello World!</p>; } }

Page 21: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE EINFACHE KOMPONENTE<HelloWorld />

Page 22: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE KOMPONENTE MIT DATEN

Anzeige eines Users / Anzeige der Liste

Page 23: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE KOMPONENTE MIT DATENclass User extends Component {

render() { return <li> <span>{this.props.user.firstName} {this.props.user.lastName}</span> </li>; } }

Page 24: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

EINE KOMPONENTE MIT DATENclass User extends Component {

render() { return <li> <span>{this.props.user.firstName} {this.props.user.lastName}</span> </li>; } }

Page 25: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 26: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 27: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 28: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 29: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 30: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VERWENDUNG<ul> { users.map((user, index) => <User user={user} key={"user_" + index} />) } </ul>

Page 31: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ANLEGEN EINES BENUTZERS

Page 32: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ANLEGEN EINES BENUTZERSclass UserCreation extends Component {

render() { return ( <div> <div>New User</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 33: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ANLEGEN EINES BENUTZERSclass UserCreation extends Component {

render() { return ( <div> <div>New User</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 34: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ANLEGEN EINES BENUTZERSclass UserCreation extends Component {

render() { return ( <div> <div>New User</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 35: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ANLEGEN EINES BENUTZERSclass UserCreation extends Component {

render() { return ( <div> <div>New User</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 36: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

DIE GESAMTE APPLIKATION

Page 37: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REACT DATA FLOW

Page 38: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

 

Page 39: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

 

Page 40: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REDUX DATA FLOW

Page 41: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

ACTIONconst USER_ADDED = "USER_ADDED"; function addUser(user) { return { type: USER_ADDED, payload: user } }

Sehr ähnlich zu CQRS / Event Sourcing

Page 42: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

STATE TREEINITIAL_STATE = { users: [] };

REDUCERSfunction reducers(state = INITIAL_STATE, action = {}){ return { users: users(state.users, action) }; }

function users(state = INITIAL_STATE.users, action = {}) { switch (action.type) { case Events.USER_ADDED: return state.concat(action.payload); } return state; }

Page 43: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

INTEGRATION IN DIE KOMPONENTEclass UserCreation extends Component {

render() { return ( <div> <div>User Creation</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 44: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

INTEGRATION IN DIE KOMPONENTEclass UserCreation extends Component {

render() { return ( <div> <div>User Creation</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ /* ... */ }>Submit</button> </div> </div> ); } }

Page 45: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

INTEGRATION IN DIE KOMPONENTEclass UserCreation extends Component {

render() { return ( <div> <div>User Creation</div> <div> <label>First Name:</label> <input type="string" /> </div> <div> <label>Last Name:</label> <input type="string" /> </div> <div> <button onClick={ () => { this.props.submitUser({firstName: ..., lastName: ...}) } }>Submit</button> </div> </div> ); } }

 

<UserCreation submitUser={ user => dispatch(Actions.addUser(user)) } />

Page 46: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REACT HOT RELOADING

Page 47: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

REDUX LOGGER

Page 48: EINFÜHRUNG IN REACT.JS UND REDUX - Digicomp · Morgen: Ganztägiger Workshop zu React und Redux. Created Date: 6/17/2016 8:25:15 PM

VIELEN DANK!

@[email protected]://www.nicole-rauch.de

https://github.com/NicoleRauch/VortragReactUndRedux

Morgen: Ganztägiger Workshop zu React und Redux