SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Rami Sayar - @ramisayar
Technical Evangelist
Microsoft Canada
@RAMISAYAR
@RAMISAYAR
• Introduction to React & the Ecosystem
• What is Flux
• What is Redux
• What is Relay (and other Reactive Databases/APIs)
• What is React Native
• Useful React Dev Tools
@RAMISAYAR
@RAMISAYAR
Level: Intermediate.
Assumption: Beginner React Developer
@RAMISAYAR
@RAMISAYAR
• React is a UI *library* developed at Facebook.
• Lets you create interactive, stateful & reusable UI components.
• React can be used on both the client and server side.
• Uses a Virtual DOM to selectively render subtrees of
components on state change.
@RAMISAYAR
• Adds this weird thing to your HTML called JSX.
• Let’s you write HTML-ish tags in JavaScript to simplify creating
components.
var HelloWorldComponent = React.createClass({
render: function(){
return ( <h1>Hello, world!</h1> );
}
});
@RAMISAYAR
• Added attributes are called props and can be used to render
dynamic data.
var HelloNameComponent = React.createClass({
render: function(){
return ( <h1>Hello, {this.props.name}!</h1> );
}
});
ReactDOM.render(<HelloNameComponent name="Rami"
/>, document.getElementById('app'));
@RAMISAYAR
• Every component has a state object and a props object.
• Functions & Objects:
• getInitialState – Return value is the initial value for state.
• setState – Sets the state and triggers UI updates.
• getDefaultProps – Sets fallback props values if props aren’t supplied.
• mixins – An array of objects, used to extend the current component’s
functionality.
@RAMISAYAR
• React events are attached as properties and can trigger
methods.
• Data flows unidirectionally via the state and props objects.
• React seams to rerender the whole app on every data change
but really it only ends up rerendering the parts that changed.
• To assign CSS classes you have to use className.
• You can use ES6 Classes instead of the createClass function.
@RAMISAYAR
@RAMISAYAR
• Flux is the architecture that Facebook uses for building client-
side web apps.
• More of a pattern rather than a framework.
• Flux doesn’t follow MVC in favor of a unidirectional data flow.
• Flux architecture is composed of four major parts: Dispatchers,
Stores, Views and Actions.
@RAMISAYAR
• Dispatchers are the central hubs that manage data flow.
• Essentially registry of callbacks into Stores.
• When Actions passed into the central Dispatcher, they are
redistributed to the Stores.
• Dispatchers manage dependencies between Stores.
• Stores contain the application state and logic (sort of like the
Model in MVC)
• Stores register themselves with the Dispatcher to receive Actions via a
callback.
• Actions describe state changes in the Store.
• Stores broadcast an event saying they have changed so Views can
update.
@RAMISAYAR
• Views are the React Components.
• React Components are composable and are typically nested in a tree
hierarchy.
• A special “App View” behaves like a controller-view and provides glue
code to propagate states down the chain.
• Events cause Views to request the State from a Store to setState() so
that render() will be executed.
• Actions describe a change and include a payload of data.
@RAMISAYAR
@RAMISAYAR
Source: https://facebook.github.io/flux/docs/overview.html
• Several Different Implementations of Flux:
• Flux by Facebook
• Redux by Dan Abramov
• Alt by Josh Perez
• Reflux by Mikael Brassman
• Fluxxor by Michelle Tilley
@RAMISAYAR
• Flux by Facebook
@RAMISAYAR
• “Redux evolves the ideas of Flux, but avoids its complexity by
taking cues from Elm.”
• “The Gist of Redux
• The whole state of your app is stored in an object tree inside a
single store.
• The only way to change the state tree is to emit an action, an object
describing what happened.
• To specify how the actions transform the state tree, you write
pure reducers.”
Source: https://github.com/reactjs/redux
@RAMISAYAR
@RAMISAYAR
• React Router keeps your UI in sync with the URL.
• Features like lazy code loading, dynamic route matching, and
location transition handling are built in.
• Use react-router-redux to sync routing state with your Redux stores.
render((
<Router history={browserHistory}>
<Route path="/" component={App}>
<Route path="about" component={About}/>
<Route path="*" component={NoMatch}/>
</Route>
</Router>
), document.body)
@RAMISAYAR
• reselect is a selector library for Redux
• Compute derived data => reduces size of the state object in Redux
• Efficient way to handle computing derived data => don’t recompute
state if arguments didn’t change. Selectors are composable.
const shopItemsSelector = state => state.shop.items;
const taxSelector = state => state.shop.taxPercent;
const subtotalSelector = createSelector( shopItemsSelector,
items => items.reduce((acc, item) => acc + item.value, 0)
)
const taxSelector = createSelector( subtotalSelector,
taxSelector, (subtotal, taxPercent) => subtotal * (taxPercent /
100)
)
@RAMISAYAR
• Immutable.js provides immutable collections and data
structures.
• Immutable: Once created, cannot be altered at another point.
• Persistent: Both original and mutated collections are valid.
• Structural Sharing: New collections are created using the same
structure as the original collection to reduce copying and achieve
space/performance efficiencies.
• List, Stack, Map, OrderedMap, Set, OrderedSet and Record.
• Use in combination with Redux.
@RAMISAYAR
• Flux Standard Action is a human-friendly standard for Flux
action objects.
• Action objects must be plain JavaScript objects and have a type
property.
• They can also have an error, payload and a meta property.
• Use with:
• redux-actions - a set of helpers for creating and handling FSA actions
in Redux.
• redux-promise - Redux promise middleware that supports FSA actions.
@RAMISAYAR
@RAMISAYAR
• react-bootstrap wraps Bootstrap into React Components.
var buttonGroupInstance = (
<ButtonGroup>
<DropdownButton bsStyle="success" title="Dropdown">
<MenuItem key="1">Dropdown</MenuItem>
</DropdownButton>
<Button bsStyle="info">Hello</Button>
</ButtonGroup>
);
@RAMISAYAR
“Foundation Apps is a new framework for building web
apps. It has awesome new features like flexbox based
grid, motion-ui, and several core components for
building web apps.” https://github.com/akiran/react-
foundation-apps
@RAMISAYAR
• Elemental UI is a UI Toolkit for React.js Websites and Apps
@RAMISAYAR
“This is a collection of some of the most
reusable React components built at Khan Academy. […]
We're trying to make it just as easy to jumpstart React
applications with a well-tested, thoughtful, and beautiful
library of components.” http://khan.github.io/react-
components/
@RAMISAYAR
@RAMISAYAR
• Relay is a JavaScript Framework for Building Data-Driven React
Applications by Facebook.
• Declarative: Use GraphQL to declare data requirements and let Relay
figure out how and when to fetch data.
• Colocation: Queries live next to views. Relay aggregates queries for
network efficiencies.
• Mutations: Relay lets you mutate data on the client and server using
GraphQL.
@RAMISAYAR
• Falcor is a JavaScript library for efficient data fetching by Netflix.
• One Model Everywhere: Represent remote data as a JSON graph. Treat
data the same everywhere (in memory, client, network, etc).
• Data is the API: JavaScript-like path syntax to access data. Retrieve data
using JavaScript operations like get, set, and call.
• Bind to the Cloud: Falcor automatically traverses references in your
graph and makes requests as needed. Falcor transparently handles
and aggregates requests for network efficiencies.
@RAMISAYAR
• React Resolver lets you define data requirements per-
component and will handle the nested, async rendering on both
the server & client for you.
@resolve("user", function(props) {
return http.get('/api/users/${props.params.userId}');
})
class UserProfile extends React.Component {
render() { ...
@RAMISAYAR
@RAMISAYAR
• React Native by Facebook enables you to build on native
platforms using JavaScript and React.
• React Native focuses on developer efficiency — learn once,
write anywhere.
• Supports iOS and Android.
@RAMISAYAR
• Use standard platform components such as UITabBar on iOS
and Drawer on Android.
• Apps have a consistent look and feel with the rest of the
platform ecosystem and have native performance.
• Operations between JavaScript and the native platform are
performed asynchronously.
• Communication is fully serializable, allows you to debug the
JavaScript while running the complete app, either in the
simulator or on a physical device.
@RAMISAYAR
@RAMISAYAR
• Adds a new tab titled "React" in your Chrome DevTools.
• Shows list of the React Component hierarchy.
@RAMISAYAR
• babel-plugin-react-transform wraps React components with
arbitrary transforms. In other words, it allows you to instrument
React components in any way—limited only by your
imagination.
• react-transform-hmr - enables hot reloading using HMR API
• react-transform-catch-errors - catches errors inside render()
• react-transform-debug-inspector - renders an inline prop inspector
• react-transform-render-visualizer - highlight components when
updated
@RAMISAYAR
@RAMISAYAR
@RAMISAYAR
• A cloud service that enables Cordova and React Native
developers to deploy mobile app updates directly to their
users’ devices.
• Manage alpha, beta and production apps.
• Cordova and React Native ready.
• http://codepush.tools
@RAMISAYAR
• Babel, ES2015 Compiler: https://babeljs.io/
• Special support for JSX & React
• Support for extensions and plugins
• Google Traceur, ES6 Compiler:
https://github.com/google/traceur-compiler
#WebNotWar - @RAMISAYAR
npm install --save-dev babel-cli
• You can setup babel to watch your files and automatically
compile by using Grunt & Gulp.
babel ./src --out-file app.js --presets es2015
• Babel will also add any missing features for browsers that
already support ES6. Babel has presets for ES7 features, React,
etc.
#WebNotWar - @RAMISAYAR
@RAMISAYAR
• A static website starter kit powered by React.js and Webpack.
✓ Generates static .html pages from React components
✓ Generates routes based on the list of files in the /pages folder
✓ Next generation JavaScript with Babel
✓ Sass syntax for CSS via postCSS and precss
✓ Development web server with BrowserSync and React Transform
✓ Bundling and optimization with Webpack
✓ Yeoman generator (generator-react-static)
@RAMISAYAR
• React Starter Kit is an opinionated boilerplate for web
development built on top of Facebook's React library, Node.js /
Express server and Flux architecture.
• Containing modern web development tools such
as Webpack, Babel and Browser Sync.
@RAMISAYAR
• MERN is the easiest way to build isomorphic JavaScript apps
using React and Redux.
• MERN is a scaffolding tool which makes it easy to build
isomorphic apps using Mongo, Express, React and NodeJS.
@RAMISAYAR
@RAMISAYAR
• Introduced React & the Ecosystem
• What is Flux Architecture
• Flux, Redux, Alt.js, etc.
• Introduced React Libraries and UI Component Libraries
• Introduced Relay, Falcor & React Resolver
• Introduced React Native
• Useful React Dev Tools
@RAMISAYAR
tw: @ramisayar | gh: @sayar
@RAMISAYAR
• https://www.toptal.com/react/navigating-the-react-ecosystem
• https://github.com/enaqx/awesome-react
• https://github.com/facebook/react/wiki/Complementary-Tools
• http://slides.com/cguedes/a-tour-on-react-ecosystem
@RAMISAYAR
©2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in the
U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft
must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Más contenido relacionado

La actualidad más candente

Building Modern Web Applications using React and Redux
 Building Modern Web Applications using React and Redux Building Modern Web Applications using React and Redux
Building Modern Web Applications using React and ReduxMaxime Najim
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentationThanh Tuong
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)Binary Studio
 
State Models for React with Redux
State Models for React with ReduxState Models for React with Redux
State Models for React with ReduxStephan Schmidt
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practicesfloydophone
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareVisual Engineering
 
Introduction to react
Introduction to reactIntroduction to react
Introduction to reactkiranabburi
 
React for Dummies
React for DummiesReact for Dummies
React for DummiesMitch Chen
 
React Native Workshop - React Alicante
React Native Workshop - React AlicanteReact Native Workshop - React Alicante
React Native Workshop - React AlicanteIgnacio Martín
 

La actualidad más candente (20)

Building Modern Web Applications using React and Redux
 Building Modern Web Applications using React and Redux Building Modern Web Applications using React and Redux
Building Modern Web Applications using React and Redux
 
React.js+Redux Workshops
React.js+Redux WorkshopsReact.js+Redux Workshops
React.js+Redux Workshops
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation
 
Redux js
Redux jsRedux js
Redux js
 
How to React Native
How to React NativeHow to React Native
How to React Native
 
React introduction
React introductionReact introduction
React introduction
 
Reactjs
Reactjs Reactjs
Reactjs
 
Workshop React.js
Workshop React.jsWorkshop React.js
Workshop React.js
 
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
React vs Angular: ups & downs (speaker Oleksandr Kovalov, Binary Studio)
 
State Models for React with Redux
State Models for React with ReduxState Models for React with Redux
State Models for React with Redux
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
React and redux
React and reduxReact and redux
React and redux
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux Middleware
 
React js
React jsReact js
React js
 
Introduction to react
Introduction to reactIntroduction to react
Introduction to react
 
How to Redux
How to ReduxHow to Redux
How to Redux
 
React for Dummies
React for DummiesReact for Dummies
React for Dummies
 
React Native Workshop - React Alicante
React Native Workshop - React AlicanteReact Native Workshop - React Alicante
React Native Workshop - React Alicante
 
React on es6+
React on es6+React on es6+
React on es6+
 
Redux Universal
Redux UniversalRedux Universal
Redux Universal
 

Destacado

MERN Presentation, January 2015
MERN Presentation, January 2015MERN Presentation, January 2015
MERN Presentation, January 2015Barry Dyck
 
React Native Internals
React Native InternalsReact Native Internals
React Native InternalsTadeu Zagallo
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteChristian Heilmann
 
What's New in ES6 for Web Devs
What's New in ES6 for Web DevsWhat's New in ES6 for Web Devs
What's New in ES6 for Web DevsRami Sayar
 
The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015Christian Heilmann
 
BabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UIBabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UImodernweb
 
Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.boyney123
 
Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Kobkrit Viriyayudhakorn
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)Joseph Chiang
 
Building Reactive webapp with React/Flux
Building Reactive webapp with React/FluxBuilding Reactive webapp with React/Flux
Building Reactive webapp with React/FluxKeuller Magalhães
 
JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016Tadeu Zagallo
 
A New Era for Animators
A New Era for AnimatorsA New Era for Animators
A New Era for AnimatorsFITC
 
Graphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionGraphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionFITC
 
Untangle The Mess In Your Team’s Process
Untangle The Mess In Your Team’s ProcessUntangle The Mess In Your Team’s Process
Untangle The Mess In Your Team’s ProcessFITC
 
Programming Play
Programming PlayProgramming Play
Programming PlayFITC
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickFITC
 

Destacado (20)

MERN Presentation, January 2015
MERN Presentation, January 2015MERN Presentation, January 2015
MERN Presentation, January 2015
 
React Native Internals
React Native InternalsReact Native Internals
React Native Internals
 
Flux and React.js
Flux and React.jsFlux and React.js
Flux and React.js
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
What's New in ES6 for Web Devs
What's New in ES6 for Web DevsWhat's New in ES6 for Web Devs
What's New in ES6 for Web Devs
 
The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015The ES6 Conundrum - All Things Open 2015
The ES6 Conundrum - All Things Open 2015
 
BabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UIBabelJS - James Kyle at Modern Web UI
BabelJS - James Kyle at Modern Web UI
 
Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.Introduction into ES6 JavaScript.
Introduction into ES6 JavaScript.
 
Emacscript 6
Emacscript 6Emacscript 6
Emacscript 6
 
Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)Running BabelJS on Windows (Try ES6 on Windows)
Running BabelJS on Windows (Try ES6 on Windows)
 
From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)From Hacker to Programmer (w/ Webpack, Babel and React)
From Hacker to Programmer (w/ Webpack, Babel and React)
 
Building Reactive webapp with React/Flux
Building Reactive webapp with React/FluxBuilding Reactive webapp with React/Flux
Building Reactive webapp with React/Flux
 
Flux architecture
Flux architectureFlux architecture
Flux architecture
 
JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016JavaScript, React Native and Performance at react-europe 2016
JavaScript, React Native and Performance at react-europe 2016
 
React & Flux Workshop
React & Flux WorkshopReact & Flux Workshop
React & Flux Workshop
 
A New Era for Animators
A New Era for AnimatorsA New Era for Animators
A New Era for Animators
 
Graphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing EvolutionGraphic Designer to Object Designer: Your 3D Printing Evolution
Graphic Designer to Object Designer: Your 3D Printing Evolution
 
Untangle The Mess In Your Team’s Process
Untangle The Mess In Your Team’s ProcessUntangle The Mess In Your Team’s Process
Untangle The Mess In Your Team’s Process
 
Programming Play
Programming PlayProgramming Play
Programming Play
 
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig FitzpatrickPageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
PageCloud Reimagines The Future of Website Creation with Craig Fitzpatrick
 

Similar a An Overview of the React Ecosystem

An Intense Overview of the React Ecosystem
An Intense Overview of the React EcosystemAn Intense Overview of the React Ecosystem
An Intense Overview of the React EcosystemRami Sayar
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React NativeRami Sayar
 
Basic React Knowledge.
Basic React Knowledge.Basic React Knowledge.
Basic React Knowledge.jacobryne
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails DevelopersArkency
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
 
Basic React Knowledge.
Basic React Knowledge.Basic React Knowledge.
Basic React Knowledge.jacobryne
 
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Zach Lendon
 
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementMidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementZach Lendon
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & MiddlewaresSantosh Wadghule
 
How To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptxHow To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptxBOSC Tech Labs
 
GDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSGDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSPratik Majumdar
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with reduxMike Melusky
 
Getting started with react &amp; redux
Getting started with react &amp; reduxGetting started with react &amp; redux
Getting started with react &amp; reduxGirish Talekar
 
Spfx with react redux
Spfx with react reduxSpfx with react redux
Spfx with react reduxRajesh Kumar
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React NativeMike Melusky
 

Similar a An Overview of the React Ecosystem (20)

An Intense Overview of the React Ecosystem
An Intense Overview of the React EcosystemAn Intense Overview of the React Ecosystem
An Intense Overview of the React Ecosystem
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
reactJS
reactJSreactJS
reactJS
 
Basic React Knowledge.
Basic React Knowledge.Basic React Knowledge.
Basic React Knowledge.
 
React.js at Cortex
React.js at CortexReact.js at Cortex
React.js at Cortex
 
React.js for Rails Developers
React.js for Rails DevelopersReact.js for Rails Developers
React.js for Rails Developers
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
 
Basic React Knowledge.
Basic React Knowledge.Basic React Knowledge.
Basic React Knowledge.
 
Advanced React
Advanced ReactAdvanced React
Advanced React
 
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
Reconciling ReactJS as a View Layer Replacement (MidwestJS 2014)
 
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer ReplacementMidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
MidwestJS 2014 Reconciling ReactJS as a View Layer Replacement
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
 
React on rails v4
React on rails v4React on rails v4
React on rails v4
 
How To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptxHow To Upgrade The React 18 Release Candidate.pptx
How To Upgrade The React 18 Release Candidate.pptx
 
GDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJSGDSC NITS Presents Kickstart into ReactJS
GDSC NITS Presents Kickstart into ReactJS
 
Introduction to react native with redux
Introduction to react native with reduxIntroduction to react native with redux
Introduction to react native with redux
 
Getting started with react &amp; redux
Getting started with react &amp; reduxGetting started with react &amp; redux
Getting started with react &amp; redux
 
Spfx with react redux
Spfx with react reduxSpfx with react redux
Spfx with react redux
 
An evening with React Native
An evening with React NativeAn evening with React Native
An evening with React Native
 
React a11y-csun
React a11y-csunReact a11y-csun
React a11y-csun
 

Más de FITC

Cut it up
Cut it upCut it up
Cut it upFITC
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital HealthFITC
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript PerformanceFITC
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech StackFITC
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR ProjectFITC
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerFITC
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryFITC
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday InnovationFITC
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight WebsitesFITC
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is TerrifyingFITC
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanFITC
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)FITC
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameFITC
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare SystemFITC
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignFITC
 
The Power of Now
The Power of NowThe Power of Now
The Power of NowFITC
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAsFITC
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstackFITC
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFITC
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForFITC
 

Más de FITC (20)

Cut it up
Cut it upCut it up
Cut it up
 
Designing for Digital Health
Designing for Digital HealthDesigning for Digital Health
Designing for Digital Health
 
Profiling JavaScript Performance
Profiling JavaScript PerformanceProfiling JavaScript Performance
Profiling JavaScript Performance
 
Surviving Your Tech Stack
Surviving Your Tech StackSurviving Your Tech Stack
Surviving Your Tech Stack
 
How to Pitch Your First AR Project
How to Pitch Your First AR ProjectHow to Pitch Your First AR Project
How to Pitch Your First AR Project
 
Start by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the AnswerStart by Understanding the Problem, Not by Delivering the Answer
Start by Understanding the Problem, Not by Delivering the Answer
 
Cocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s StoryCocaine to Carrots: The Art of Telling Someone Else’s Story
Cocaine to Carrots: The Art of Telling Someone Else’s Story
 
Everyday Innovation
Everyday InnovationEveryday Innovation
Everyday Innovation
 
HyperLight Websites
HyperLight WebsitesHyperLight Websites
HyperLight Websites
 
Everything is Terrifying
Everything is TerrifyingEverything is Terrifying
Everything is Terrifying
 
Post-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future HumanPost-Earth Visions: Designing for Space and the Future Human
Post-Earth Visions: Designing for Space and the Future Human
 
The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)The Rise of the Creative Social Influencer (and How to Become One)
The Rise of the Creative Social Influencer (and How to Become One)
 
East of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR GameEast of the Rockies: Developing an AR Game
East of the Rockies: Developing an AR Game
 
Creating a Proactive Healthcare System
Creating a Proactive Healthcare SystemCreating a Proactive Healthcare System
Creating a Proactive Healthcare System
 
World Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product DesignWorld Transformation: The Secret Agenda of Product Design
World Transformation: The Secret Agenda of Product Design
 
The Power of Now
The Power of NowThe Power of Now
The Power of Now
 
High Performance PWAs
High Performance PWAsHigh Performance PWAs
High Performance PWAs
 
Rise of the JAMstack
Rise of the JAMstackRise of the JAMstack
Rise of the JAMstack
 
From Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self DiscoveryFrom Closed to Open: A Journey of Self Discovery
From Closed to Open: A Journey of Self Discovery
 
Projects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time ForProjects Ain’t Nobody Got Time For
Projects Ain’t Nobody Got Time For
 

Último

𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...Neha Pandey
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024APNIC
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...Escorts Call Girls
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445ruhi
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Call Girls in Nagpur High Profile
 
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.CarlotaBedoya1
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Delhi Call girls
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 

Último (20)

𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...(+971568250507  ))#  Young Call Girls  in Ajman  By Pakistani Call Girls  in ...
(+971568250507 ))# Young Call Girls in Ajman By Pakistani Call Girls in ...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
All Time Service Available Call Girls Mg Road 👌 ⏭️ 6378878445
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
Russian Call Girls in %(+971524965298  )#  Call Girls in DubaiRussian Call Girls in %(+971524965298  )#  Call Girls in Dubai
Russian Call Girls in %(+971524965298 )# Call Girls in Dubai
 
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
INDIVIDUAL ASSIGNMENT #3 CBG, PRESENTATION.
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 6 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
@9999965857 🫦 Sexy Desi Call Girls Laxmi Nagar 💓 High Profile Escorts Delhi 🫶
 

An Overview of the React Ecosystem

  • 1. Rami Sayar - @ramisayar Technical Evangelist Microsoft Canada @RAMISAYAR
  • 3. • Introduction to React & the Ecosystem • What is Flux • What is Redux • What is Relay (and other Reactive Databases/APIs) • What is React Native • Useful React Dev Tools @RAMISAYAR
  • 5. Level: Intermediate. Assumption: Beginner React Developer @RAMISAYAR
  • 7. • React is a UI *library* developed at Facebook. • Lets you create interactive, stateful & reusable UI components. • React can be used on both the client and server side. • Uses a Virtual DOM to selectively render subtrees of components on state change. @RAMISAYAR
  • 8. • Adds this weird thing to your HTML called JSX. • Let’s you write HTML-ish tags in JavaScript to simplify creating components. var HelloWorldComponent = React.createClass({ render: function(){ return ( <h1>Hello, world!</h1> ); } }); @RAMISAYAR
  • 9. • Added attributes are called props and can be used to render dynamic data. var HelloNameComponent = React.createClass({ render: function(){ return ( <h1>Hello, {this.props.name}!</h1> ); } }); ReactDOM.render(<HelloNameComponent name="Rami" />, document.getElementById('app')); @RAMISAYAR
  • 10. • Every component has a state object and a props object. • Functions & Objects: • getInitialState – Return value is the initial value for state. • setState – Sets the state and triggers UI updates. • getDefaultProps – Sets fallback props values if props aren’t supplied. • mixins – An array of objects, used to extend the current component’s functionality. @RAMISAYAR
  • 11. • React events are attached as properties and can trigger methods. • Data flows unidirectionally via the state and props objects. • React seams to rerender the whole app on every data change but really it only ends up rerendering the parts that changed. • To assign CSS classes you have to use className. • You can use ES6 Classes instead of the createClass function. @RAMISAYAR
  • 13. • Flux is the architecture that Facebook uses for building client- side web apps. • More of a pattern rather than a framework. • Flux doesn’t follow MVC in favor of a unidirectional data flow. • Flux architecture is composed of four major parts: Dispatchers, Stores, Views and Actions. @RAMISAYAR
  • 14. • Dispatchers are the central hubs that manage data flow. • Essentially registry of callbacks into Stores. • When Actions passed into the central Dispatcher, they are redistributed to the Stores. • Dispatchers manage dependencies between Stores. • Stores contain the application state and logic (sort of like the Model in MVC) • Stores register themselves with the Dispatcher to receive Actions via a callback. • Actions describe state changes in the Store. • Stores broadcast an event saying they have changed so Views can update. @RAMISAYAR
  • 15. • Views are the React Components. • React Components are composable and are typically nested in a tree hierarchy. • A special “App View” behaves like a controller-view and provides glue code to propagate states down the chain. • Events cause Views to request the State from a Store to setState() so that render() will be executed. • Actions describe a change and include a payload of data. @RAMISAYAR
  • 17. • Several Different Implementations of Flux: • Flux by Facebook • Redux by Dan Abramov • Alt by Josh Perez • Reflux by Mikael Brassman • Fluxxor by Michelle Tilley @RAMISAYAR
  • 18. • Flux by Facebook @RAMISAYAR
  • 19. • “Redux evolves the ideas of Flux, but avoids its complexity by taking cues from Elm.” • “The Gist of Redux • The whole state of your app is stored in an object tree inside a single store. • The only way to change the state tree is to emit an action, an object describing what happened. • To specify how the actions transform the state tree, you write pure reducers.” Source: https://github.com/reactjs/redux @RAMISAYAR
  • 21. • React Router keeps your UI in sync with the URL. • Features like lazy code loading, dynamic route matching, and location transition handling are built in. • Use react-router-redux to sync routing state with your Redux stores. render(( <Router history={browserHistory}> <Route path="/" component={App}> <Route path="about" component={About}/> <Route path="*" component={NoMatch}/> </Route> </Router> ), document.body) @RAMISAYAR
  • 22. • reselect is a selector library for Redux • Compute derived data => reduces size of the state object in Redux • Efficient way to handle computing derived data => don’t recompute state if arguments didn’t change. Selectors are composable. const shopItemsSelector = state => state.shop.items; const taxSelector = state => state.shop.taxPercent; const subtotalSelector = createSelector( shopItemsSelector, items => items.reduce((acc, item) => acc + item.value, 0) ) const taxSelector = createSelector( subtotalSelector, taxSelector, (subtotal, taxPercent) => subtotal * (taxPercent / 100) ) @RAMISAYAR
  • 23. • Immutable.js provides immutable collections and data structures. • Immutable: Once created, cannot be altered at another point. • Persistent: Both original and mutated collections are valid. • Structural Sharing: New collections are created using the same structure as the original collection to reduce copying and achieve space/performance efficiencies. • List, Stack, Map, OrderedMap, Set, OrderedSet and Record. • Use in combination with Redux. @RAMISAYAR
  • 24. • Flux Standard Action is a human-friendly standard for Flux action objects. • Action objects must be plain JavaScript objects and have a type property. • They can also have an error, payload and a meta property. • Use with: • redux-actions - a set of helpers for creating and handling FSA actions in Redux. • redux-promise - Redux promise middleware that supports FSA actions. @RAMISAYAR
  • 26. • react-bootstrap wraps Bootstrap into React Components. var buttonGroupInstance = ( <ButtonGroup> <DropdownButton bsStyle="success" title="Dropdown"> <MenuItem key="1">Dropdown</MenuItem> </DropdownButton> <Button bsStyle="info">Hello</Button> </ButtonGroup> ); @RAMISAYAR
  • 27. “Foundation Apps is a new framework for building web apps. It has awesome new features like flexbox based grid, motion-ui, and several core components for building web apps.” https://github.com/akiran/react- foundation-apps @RAMISAYAR
  • 28. • Elemental UI is a UI Toolkit for React.js Websites and Apps @RAMISAYAR
  • 29. “This is a collection of some of the most reusable React components built at Khan Academy. […] We're trying to make it just as easy to jumpstart React applications with a well-tested, thoughtful, and beautiful library of components.” http://khan.github.io/react- components/ @RAMISAYAR
  • 31. • Relay is a JavaScript Framework for Building Data-Driven React Applications by Facebook. • Declarative: Use GraphQL to declare data requirements and let Relay figure out how and when to fetch data. • Colocation: Queries live next to views. Relay aggregates queries for network efficiencies. • Mutations: Relay lets you mutate data on the client and server using GraphQL. @RAMISAYAR
  • 32. • Falcor is a JavaScript library for efficient data fetching by Netflix. • One Model Everywhere: Represent remote data as a JSON graph. Treat data the same everywhere (in memory, client, network, etc). • Data is the API: JavaScript-like path syntax to access data. Retrieve data using JavaScript operations like get, set, and call. • Bind to the Cloud: Falcor automatically traverses references in your graph and makes requests as needed. Falcor transparently handles and aggregates requests for network efficiencies. @RAMISAYAR
  • 33. • React Resolver lets you define data requirements per- component and will handle the nested, async rendering on both the server & client for you. @resolve("user", function(props) { return http.get('/api/users/${props.params.userId}'); }) class UserProfile extends React.Component { render() { ... @RAMISAYAR
  • 35. • React Native by Facebook enables you to build on native platforms using JavaScript and React. • React Native focuses on developer efficiency — learn once, write anywhere. • Supports iOS and Android. @RAMISAYAR
  • 36. • Use standard platform components such as UITabBar on iOS and Drawer on Android. • Apps have a consistent look and feel with the rest of the platform ecosystem and have native performance. • Operations between JavaScript and the native platform are performed asynchronously. • Communication is fully serializable, allows you to debug the JavaScript while running the complete app, either in the simulator or on a physical device. @RAMISAYAR
  • 38. • Adds a new tab titled "React" in your Chrome DevTools. • Shows list of the React Component hierarchy. @RAMISAYAR
  • 39. • babel-plugin-react-transform wraps React components with arbitrary transforms. In other words, it allows you to instrument React components in any way—limited only by your imagination. • react-transform-hmr - enables hot reloading using HMR API • react-transform-catch-errors - catches errors inside render() • react-transform-debug-inspector - renders an inline prop inspector • react-transform-render-visualizer - highlight components when updated @RAMISAYAR
  • 42. • A cloud service that enables Cordova and React Native developers to deploy mobile app updates directly to their users’ devices. • Manage alpha, beta and production apps. • Cordova and React Native ready. • http://codepush.tools @RAMISAYAR
  • 43. • Babel, ES2015 Compiler: https://babeljs.io/ • Special support for JSX & React • Support for extensions and plugins • Google Traceur, ES6 Compiler: https://github.com/google/traceur-compiler #WebNotWar - @RAMISAYAR
  • 44. npm install --save-dev babel-cli • You can setup babel to watch your files and automatically compile by using Grunt & Gulp. babel ./src --out-file app.js --presets es2015 • Babel will also add any missing features for browsers that already support ES6. Babel has presets for ES7 features, React, etc. #WebNotWar - @RAMISAYAR
  • 46. • A static website starter kit powered by React.js and Webpack. ✓ Generates static .html pages from React components ✓ Generates routes based on the list of files in the /pages folder ✓ Next generation JavaScript with Babel ✓ Sass syntax for CSS via postCSS and precss ✓ Development web server with BrowserSync and React Transform ✓ Bundling and optimization with Webpack ✓ Yeoman generator (generator-react-static) @RAMISAYAR
  • 47. • React Starter Kit is an opinionated boilerplate for web development built on top of Facebook's React library, Node.js / Express server and Flux architecture. • Containing modern web development tools such as Webpack, Babel and Browser Sync. @RAMISAYAR
  • 48. • MERN is the easiest way to build isomorphic JavaScript apps using React and Redux. • MERN is a scaffolding tool which makes it easy to build isomorphic apps using Mongo, Express, React and NodeJS. @RAMISAYAR
  • 50. • Introduced React & the Ecosystem • What is Flux Architecture • Flux, Redux, Alt.js, etc. • Introduced React Libraries and UI Component Libraries • Introduced Relay, Falcor & React Resolver • Introduced React Native • Useful React Dev Tools @RAMISAYAR
  • 51. tw: @ramisayar | gh: @sayar @RAMISAYAR
  • 52. • https://www.toptal.com/react/navigating-the-react-ecosystem • https://github.com/enaqx/awesome-react • https://github.com/facebook/react/wiki/Complementary-Tools • http://slides.com/cguedes/a-tour-on-react-ecosystem @RAMISAYAR
  • 53. ©2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, Office, Azure, System Center, Dynamics and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.