Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

REACTJS

Slide 3

Slide 3 text

COMMENT SIMPLIFIER LA CONCEPTION DE L'UI ?

Slide 4

Slide 4 text

RAPPELLE TOI AVANT XHR

Slide 5

Slide 5 text

Client Serveur

Slide 6

Slide 6 text

Client Serveur

Slide 7

Slide 7 text

Client Serveur

Slide 8

Slide 8 text

Client Serveur

Slide 9

Slide 9 text

DATA RENDER

Slide 10

Slide 10 text

DATA RENDER DOM STATE DATA-BINDING ENLEVER LES VUES NON-ACTIVES RAJOUTER LES VUES

Slide 11

Slide 11 text

DATA RENDER DOM STATE DATA-BINDING ENLEVER LES VUES NON-ACTIVES RAJOUTER LES VUES

Slide 12

Slide 12 text

RE-RENDER ALL THE THINGS

Slide 13

Slide 13 text

render()  {      return  (          

hello  {this.props.name}

     )   }

Slide 14

Slide 14 text

render()  {      return  (          

hello  {this.props.name}

     )   }

Slide 15

Slide 15 text

DÉCRIRE LE COMPOSANT À TOUT MOMENT

Slide 16

Slide 16 text

TOUT EST UN COMPOSANT

Slide 17

Slide 17 text

1 17

Slide 18

Slide 18 text

1 18

Slide 19

Slide 19 text

1 19

Slide 20

Slide 20 text

JSX JAVASCRIPT XML

Slide 21

Slide 21 text

1 21

Slide 22

Slide 22 text

1 22 React.createElement("div",  {className:"wtf"})

Slide 23

Slide 23 text

BONUS ES6 FLOW

Slide 24

Slide 24 text

API

Slide 25

Slide 25 text

ng-repeat="friend in friends | filter:searchText"

Slide 26

Slide 26 text

WTF

Slide 27

Slide 27 text

TOUTES LES FEATURES DE JAVASCRIPT DANS LE TEMPLATE

Slide 28

Slide 28 text

GETTERS : .css(propertyName) .css(propertyNames) SETTERS : .css(propertyName, value) .css(propertyName, func) .css(properties)

Slide 29

Slide 29 text

LELNOPE

Slide 30

Slide 30 text

EXPLICITE >>> *

Slide 31

Slide 31 text

1 31 React.render(,  node)       React.renderToString(,  node)       React.renderToStaticMarkup(,  node)

Slide 32

Slide 32 text

LIFECYCLE 32 componentWillMount   componentDidMount   componentWillUnmount

Slide 33

Slide 33 text

LIFECYCLE 33 shouldComponentUpdate   componentWillUpdate   componentDidUpdate   componentWillReceiveProps

Slide 34

Slide 34 text

STATE 34 getInitialState()  {}   setState({})   replaceState({})

Slide 35

Slide 35 text

DEFAULTS 35 getDefaultProps()  {}

Slide 36

Slide 36 text

COMPOSITION 36 mixins  :  [      {          componentDidMount()  {              console.log("foo")          }      }   ]

Slide 37

Slide 37 text

1 37 var  React  =  require("react/addons")   var  Comment  =  require("components/comment")       var  CommentList  =  React.createClass({      propTypes  :  {          comments  :  React.PropTypes.arrayOf(React.PropTypes.object).isRequired      },      render()  {          return  (              
                 {this.props.comments.map((item)  =>  )}              
         )      }   })       module.exports  =  CommentList

Slide 38

Slide 38 text

1 38 var  React   var  Comment       var  CommentList      propTypes          comments      },      render()  {                                      {                    )      }   })       module React.createClass

Slide 39

Slide 39 text

1 39 var  React   var  Comment       var  CommentList      propTypes          comments      },      render()  {                                      {                    )      }   })       module    propTypes  :  {          comments  :  React.PropTypes.arrayOf(React.PropTypes.object).isRequired      },

Slide 40

Slide 40 text

1 40 var  React   var  Comment       var  CommentList      propTypes          comments      },      render()  {                                      {                    )      }   })       module                {this.props.comments.map((item)  =>  )}  

Slide 41

Slide 41 text

1 41 var  React   var  Comment       var  CommentList      propTypes          comments      },      render()  {                                      {                    )      }   })       module                {this.props.comments.map((item)  =>  )}   var  Comment  =  require("components/comment")  

Slide 42

Slide 42 text

1 42 var  React  =  require("react/addons")   var  Author  =  require("components/author")       var  Comment  =  React.createClass({      propTypes  :  {          item  :  React.PropTypes.shape({              id  :  React.PropTypes.string.isRequired,              message  :  React.PropTypes.string,              author  :  React.PropTypes.object          })      },      render()  {          return  (              
                                   
             
         )      }   })       module.exports  =  Comment

Slide 43

Slide 43 text

1 43 var  React   var  Author       var  Comment      propTypes          item              id              message              author          })      },      render()  {                                                                            className                                          )      }   })       module    propTypes  :  {          item  :  React.PropTypes.shape({              id  :  React.PropTypes.string.isRequired,              message  :  React.PropTypes.string,              author  :  React.PropTypes.object          })      },

Slide 44

Slide 44 text

1 44 var  React   var  Author       var  Comment      propTypes          item              id              message              author          })      },      render()  {                                                                            className                                          )      }   })       module                  

Slide 45

Slide 45 text

1 45 var  React   var  Author       var  Comment      propTypes          item              id              message              author          })      },      render()  {                                                                            className                                          )      }   })       module dangerouslySetInnerHTML={{__html  :  this.props.message}}

Slide 46

Slide 46 text

DOM EVENTS

Slide 47

Slide 47 text

1 47
 

Slide 48

Slide 48 text

1 48
 
AUTOBINDING!

Slide 49

Slide 49 text

PERFORMANCE

Slide 50

Slide 50 text

VIRTUAL DOM

Slide 51

Slide 51 text

Slide 52

Slide 52 text

Slide 53

Slide 53 text

Slide 54

Slide 54 text

Slide 55

Slide 55 text

OBJECT POOLING

Slide 56

Slide 56 text

IMMUTABILITY

Slide 57

Slide 57 text

1 57 shouldComponentUpdate(nextProps,  nextState)  {      return  this.props.id  !==  nextProps.id   }

Slide 58

Slide 58 text

FRAMEWORK? BIBLIOTHÈQUE

Slide 59

Slide 59 text

0 225 450 675 900 ANGULAR COURBE D'APPRENTISSAGE

Slide 60

Slide 60 text

0 25 50 75 100 REACTJS COURBE D'APPRENTISSAGE

Slide 61

Slide 61 text

RÉCAP

Slide 62

Slide 62 text

RE-RENDER ALL THE THINGS COMPONENTS EVERYWHERE API EXPLICITE >>>> *

Slide 63

Slide 63 text

MERCI Matthias Le Brun lead front-end [email protected]