Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Time to React.

Time to React.

based on Pete Hunt's and Pedro Nauck's talks, I gave a fast talk to my organization about React. Its all about JavaScript.

Gal Schlezinger

July 08, 2015
Tweet

More Decks by Gal Schlezinger

Other Decks in Programming

Transcript

  1. Ampersand Angular 2.0 AngularDart AngularJS Aria Templates Atma.js Aurelia Backbone.js

    Batman.js CanJS Chaplin Closure ComponentJS DUEL Dart DeftJS Dijon Dojo Durandal Elm Ember.js Enyo Epitome Exoskeleton FOAM Flight GWT Kendo UI Knockback.js KnockoutJS Lavaca MarionetteJS Meteor Mithril Montage Olives Polymer PureMVC Ractive.js Reagent SAPUI5 Sammy.js Serenade.js SocketStream Spine Thorax TroopJS TypeScript Vue.js WebRx YUI cujoJS jQuery rAppid.js soma.js
  2. Ampersand Angular 2.0 AngularDart AngularJS Aria Templates Atma.js Aurelia Backbone.js

    Batman.js CanJS Chaplin Closure ComponentJS DUEL Dart DeftJS Dijon Dojo Durandal Elm Ember.js Enyo Epitome Exoskeleton FOAM Flight GWT Kendo UI Knockback.js KnockoutJS Lavaca MarionetteJS Meteor Mithril Montage Olives Polymer PureMVC Ractive.js Reagent SAPUI5 Sammy.js Serenade.js SocketStream Spine Thorax TroopJS TypeScript Vue.js WebRx YUI cujoJS jQuery rAppid.js soma.js
  3. angular However isolated scope creates a new problem: if a

    transcluded DOM is a child of the widget isolated scope then it will not be able to bind to anything. For this reason the transcluded scope is a child of the original scope, before the widget created an isolated scope for its local variables. This makes the transcluded and widget isolated scope siblings > http://docs.angularjs.org/guide/directive
  4. UI.

  5. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה
  6. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה FacebookPost
  7. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה
  8. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה CommentList Profil ePic TimeAgo
  9. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה
  10. Gal Schlezinger posted on 1 hour ago םינפל הז ןנחוי

    ועמש ואוו 3 likes 10 comments Ariel Jannai: ילש ךלמה התא Ran Fedida: םודא ילש בלה Comment Comment
  11. 1. Declarative > Imperative 2. Re-render on every change 3.

    Virtual DOM +--------+ | Agenda | +--------+
  12. App

  13. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  14. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  15. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  16. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  17. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  18. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( React.createElement(‘div’, { className: 'class-name' }, 'Hello World!’) ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  19. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  20. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( React.createElement(SimpleComponent), document.getElementById(‘main') );
  21. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( <SimpleComponent />, document.getElementById(‘main') );
  22. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( <SimpleComponent />, document.getElementById(‘main') ); es6 jsx
  23. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( <SimpleComponent />, document.getElementById(‘main') ); es6 jsx
  24. import React, { Component } from ‘react’; class SimpleComponent extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( <SimpleComponent />, document.getElementById(‘main') );
  25. import React, { Component } from ‘react’; class HelloTo extends

    Component { render() { return ( <div className=‘class-name’> Hello World! </div> ); } } React.render( <HelloTo name=‘Gal Hagever’ />, document.getElementById(‘main') );
  26. import React, { Component } from ‘react’; class HelloTo extends

    Component { render() { return ( <div className=‘class-name’> Hello { this.props.name }! </div> ); } } React.render( <HelloTo name=‘Gal Hagever’ />, document.getElementById(‘main') );
  27. class HelloToGal extends Component { render() { return (<HelloTo name=‘Gal

    Hagever’ />); } } React.render( <HelloToGal />, document.getElementById(‘main') );
  28. class Counter extends Component { constructor(props) { super(props); this.handleClick =

    this.handleClick.bind(this); this.state = { clicked: 0 }; } handleClick() { this.setState({ clicked: this.state.clicked + 1 }); } render() { return ( <div onClick={ this.handleClick }> clicked { this.state.clicked } times! </div> ); } }
  29. class Counter extends Component { constructor(props) { super(props); this.handleClick =

    this.handleClick.bind(this); this.state = { clicked: 0 }; } handleClick() { this.setState({ clicked: this.state.clicked + 1 }); } render() { return ( <div onClick={ this.handleClick }> clicked { this.state.clicked } times! </div> ); } } WAT WAT WAT
  30. export default class Counter extends Component { constructor(props) { super(props);

    this.handleClick = this.handleClick.bind(this); this.state = { clicked: 0 }; } handleClick() { this.setState({ clicked: this.state.clicked + 1 }); } render() { return ( <div onClick={ this.handleClick }> clicked { this.state.clicked } times! </div> ); } } // components/counter.js
  31. var str = '<li class="note">' + note.message + ' by

    ' + note.author + '</li>'; $(document.body).append(str); jQuery
  32. var str = '<li class="note">' + note.message + ' by

    ' + note.author + '</li>'; $(document.body).append(str); jQuery