SlideShare a Scribd company logo
© 2017 Sencha Inc. • CONFIDENTIAL •
Introducing ExtReact:Adding
Powerful Sencha Components
to ReactApps
Mark Brocato
Engineering Director, Sencha
@mockaroodev
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext JS
Ext JS
Components
Ext JS Framework
© 2017 Sencha Inc. • CONFIDENTIAL •
React: A Component Framework w/o Components
Ext JS
Components
Ext JS Framework
ExtReact
React.js
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact
Use All Ext JS Components in React
© 2017 Sencha Inc. • CONFIDENTIAL •
Motivation for ExtReact
• No complete component libraries available for React
• Dependency fatigue
• Form without function
• Head start
• Data-driven, enterprise apps
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact: 100+ Components
• Grid
• List
• Tree
• Calendar
• Layouts
• Form Fields
• Animations
• Charts
• D3 Visualizations
© 2017 Sencha Inc. • CONFIDENTIAL •
@extjs/reactor
GitHub: extjs-reactor
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact vs Ext JS + React
ExtReact
• Separate license from Ext JS (annual
subscription, perpetual distribution
rights)
• Streamlined installation (NPM)
• Modern toolkit only (Ext JS 6.5)
Ext JS + Reactor
• Use your existing Ext JS license
• Traditional Ext JS installation process
• Modern + Classic toolkits
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact Grid
<Grid title="Stock Prices" store={this.store}>
<Column text="Company" dataIndex="name"/>
<Column text="Price" dataIndex="price" formatter='usMoney'/>
<Column text="Change" dataIndex="priceChange"/>
<Column text="% Change" dataIndex="priceChangePct"/>
<Column text="Last Updated" dataIndex="lastChange" formatter='date("m/d/Y")'/>
</Grid>
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact for Ext JS Developers
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true
});
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
}
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
itemtap: function(list, index, target, record) {
console.log(`Tapped ${record.get('name')}`)
},
show: {
single: true,
fn: function() {
// load store
}
}
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
itemTpl={data => (
<div>
<div>{data.firstName} {data.lastName}</div>
<div>{data.title}</div>
</div>
)}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
...
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
items: [{
xtype: 'toolbar',
docked: 'top'
items: [{
xtype: 'button',
text: 'Refresh'
}]
}]
});
import { List } from '@extjs/ext-react';
<List
store={contacts}
grouped
onItemTap={(list, index, target, record) => {
console.log(`Tapped ${record.get('name')}`)
}}
onShow={{
single: true,
fn: () => {
// load store
}
}}
itemTpl={data => (
<div>
<div>{data.firstName} {data.lastName}</div>
<div>{data.title}</div>
</div>
)}
/>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
Ext.create({
xtype: 'list',
store: contacts,
grouped: true,
listeners: {
...
},
itemTpl: (
'<div>' +
'<div>{firstName} {lastName}</div>' +
'<div>{title}</div>' +
'</div>'
)
items: [{
xtype: 'toolbar',
docked: 'top'
items: [{
xtype: 'button',
text: 'Refresh'
}]
}]
});
20
import { List, Toolbar, Button } from '@extjs/ext-react';
<List
store={contacts}
grouped
...
itemTpl={data => (
<div>
<div>{firstName} {lastName}</div>
<div>{title}</div>
</div>
)}
>
<Toolbar>
<Button
text="Refresh"
/>
</Toolbar>
</List>
Ext JS ExtReact
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact Components are Themable
• Each can be extended using SASS or Sencha Themer
Triton Material iOS
© 2017 Sencha Inc. • CONFIDENTIAL •
Sencha Themer
22
© 2017 Sencha Inc. • CONFIDENTIAL •
FAQ
• Controllers
• ViewModels
How much of the Ext JS framework will I use?
Components
Stores
Models
Grid, Tree, Calendar, etc…
Flux (Redux, MobX, et al...)
© 2017 Sencha Inc. • CONFIDENTIAL •
Components Virtual DOM DOMExtReact?
Ext JS
FAQ
Does ExtReact use the Virtual DOM?
© 2017 Sencha Inc. • CONFIDENTIAL •
FAQ
Can I reuse components from pure Ext JS apps?
import { reactify } from '@extjs/reactor';
const MyCustomComponent = reactify(MyPackage.MyCustomComponent);
...
render() {
return <MyCustomComponent ... />
}
© 2017 Sencha Inc. • CONFIDENTIAL •
ExtReact: Getting Set Up
© 2017 Sencha Inc. • CONFIDENTIAL •
Sign up for a trial at sencha.com
npm login --registry=http://npm.sencha.com --scope=@extjs
© 2017 Sencha Inc. • CONFIDENTIAL •
Use Yeoman to create new apps
npm install –g yo @extjs/generator-ext-react
yo @extjs/ext-react
© 2017 Sencha Inc. • CONFIDENTIAL •
GitHub: sencha/extjs-reactor
packages/reactor-modern-boilerplate
packages/reactor-classic-boilerplate
© 2017 Sencha Inc. • CONFIDENTIAL •
Adding ExtReact to an Existing React App
• npm install --save @extjs/reactor @extjs/ext-react
• npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
© 2017 Sencha Inc. • CONFIDENTIAL •
Adding Ext JS to an Existing React App
• npm install --save @extjs/reactor
• npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
• Download and unzip Ext JS from sencha.com
© 2017 Sencha Inc. • CONFIDENTIAL •
Webpack
import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’
...
plugins: [
new ExtReactWebpackPlugin({
theme: 'theme-material'
}),
]
© 2017 Sencha Inc. • CONFIDENTIAL •
Webpack
import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’
...
plugins: [
new ExtReactWebpackPlugin({
theme: 'theme-material',
// not needed for ExtReact
sdk: '/path/to/extjs',
toolkit: 'modern'
packages: ['charts']
}),
]
© 2017 Sencha Inc. • CONFIDENTIAL •
Babel
.babelrc
{
"plugins": [
"@extjs/reactor-babel-plugin"
]
}
© 2017 Sencha Inc. • CONFIDENTIAL •
React App Launch
import React from ’react';
import App from './App'; // app components
import { launch } from '@extjs/reactor';
launch(<App/>); // replaces ReactDOM.render(<App/>, document.getElementById(‘root’))
© 2017 Sencha Inc. • CONFIDENTIAL •
Live Demos
© 2017 Sencha Inc. • CONFIDENTIAL •
Sencha Fiddle
https://fiddle.sencha.com/?extreact
© 2017 Sencha Inc. • CONFIDENTIAL •
Q&A
© 2017 Sencha Inc. • CONFIDENTIAL •
Thank You!

More Related Content

What's hot

Drupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionDrupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency Injection
Philip Norton
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
EPAM Systems
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
Sergey Bolshchikov
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
Nuvole
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS Directives
Eyal Vardi
 
Coder Presentation Szeged
Coder Presentation SzegedCoder Presentation Szeged
Coder Presentation SzegedDoug Green
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
Claude Tech
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasminePaulo Ragonha
 
Getting Into Drupal 8 Configuration
Getting Into Drupal 8 ConfigurationGetting Into Drupal 8 Configuration
Getting Into Drupal 8 Configuration
Philip Norton
 
Intro to Angular.JS Directives
Intro to Angular.JS DirectivesIntro to Angular.JS Directives
Intro to Angular.JS Directives
Christian Lilley
 
Build Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and ConfluenceBuild Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and Confluence
K15t
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
Philip Norton
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Acquia
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr Tolstykh
CodeFest
 
Django
DjangoDjango
Django
Ivan Widodo
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
Simon Guest
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigation
Binary Studio
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgets
velveeta_512
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
Eric Palakovich Carr
 

What's hot (20)

Drupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency InjectionDrupal 8 Services And Dependency Injection
Drupal 8 Services And Dependency Injection
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
AngularJS Basics with Example
AngularJS Basics with ExampleAngularJS Basics with Example
AngularJS Basics with Example
 
First Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven DevelopmentFirst Steps in Drupal Code Driven Development
First Steps in Drupal Code Driven Development
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS Directives
 
Coder Presentation Szeged
Coder Presentation SzegedCoder Presentation Szeged
Coder Presentation Szeged
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
 
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and JasmineSingle Page Web Applications with CoffeeScript, Backbone and Jasmine
Single Page Web Applications with CoffeeScript, Backbone and Jasmine
 
Getting Into Drupal 8 Configuration
Getting Into Drupal 8 ConfigurationGetting Into Drupal 8 Configuration
Getting Into Drupal 8 Configuration
 
Intro to Angular.JS Directives
Intro to Angular.JS DirectivesIntro to Angular.JS Directives
Intro to Angular.JS Directives
 
Build Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and ConfluenceBuild Amazing Add-ons for Atlassian JIRA and Confluence
Build Amazing Add-ons for Atlassian JIRA and Confluence
 
Becoming A Drupal Master Builder
Becoming A Drupal Master BuilderBecoming A Drupal Master Builder
Becoming A Drupal Master Builder
 
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to PluginDrupal 8, Where Did the Code Go? From Info Hook to Plugin
Drupal 8, Where Did the Code Go? From Info Hook to Plugin
 
Oleksandr Tolstykh
Oleksandr TolstykhOleksandr Tolstykh
Oleksandr Tolstykh
 
Django
DjangoDjango
Django
 
Advanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JSAdvanced Tips & Tricks for using Angular JS
Advanced Tips & Tricks for using Angular JS
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigation
 
Getting the Most Out of jQuery Widgets
Getting the Most Out of jQuery WidgetsGetting the Most Out of jQuery Widgets
Getting the Most Out of jQuery Widgets
 
Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!Django Rest Framework and React and Redux, Oh My!
Django Rest Framework and React and Redux, Oh My!
 

Viewers also liked

Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
Sencha
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Sencha
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff Stano
Sencha
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
Sencha
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
Sencha
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
Sencha
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
Sencha
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
Sencha
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
Sencha
 

Viewers also liked (16)

Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
Sencha Roadshow 2017: BufferedStore Internals featuring eyeworkers interactiv...
 
Sencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop FirstSencha Roadshow 2017: Mobile First or Desktop First
Sencha Roadshow 2017: Mobile First or Desktop First
 
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
SenchaCon 2016: Improve Workflow Driven Applications with Ext JS Draw Package...
 
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data GridLeveraging React and GraphQL to Create a Performant, Scalable Data Grid
Leveraging React and GraphQL to Create a Performant, Scalable Data Grid
 
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
Sencha Roadshow 2017: Sencha Best Practices: Coworkee App
 
Building Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff StanoBuilding Ext JS Using HATEOAS - Jeff Stano
Building Ext JS Using HATEOAS - Jeff Stano
 
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and BeyondSencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
Sencha Roadshow 2017: Innovations in Ext JS 6.5 and Beyond
 
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
Sencha Roadshow 2017: Sencha Upgrades - The Good. The Bad. The Ugly - Eva Luc...
 
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web AppsSenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
SenchaCon 2016: Expect the Unexpected - Dealing with Errors in Web Apps
 
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
SenchaCon 2016: Add Magic to Your Ext JS Apps with D3 Visualizations - Vitaly...
 
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
 
Learn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research ReportLearn Key Insights from The State of Web Application Testing Research Report
Learn Key Insights from The State of Web Application Testing Research Report
 
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App TestingSencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
Sencha Roadshow 2017: Best Practices for Implementing Continuous Web App Testing
 
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
Sencha Roadshow 2017: Build Progressive Web Apps with Ext JS and Cmd
 
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
SenchaCon 2016: Mobile First? Desktop First? Or Should you Think Universal Ap...
 
Sencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha TestSencha Roadshow 2017: What's New in Sencha Test
Sencha Roadshow 2017: What's New in Sencha Test
 

Similar to Introducing ExtReact: Adding Powerful Sencha Components to React Apps

Introduction to Spring Boot.pdf
Introduction to Spring Boot.pdfIntroduction to Spring Boot.pdf
Introduction to Spring Boot.pdf
ShaiAlmog1
 
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
Edureka!
 
React native app with type script tutorial
React native app with type script tutorialReact native app with type script tutorial
React native app with type script tutorial
Katy Slemon
 
Developing components and extensions for ext js
Developing components and extensions for ext jsDeveloping components and extensions for ext js
Developing components and extensions for ext jsMats Bryntse
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
James Titcumb
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Ontico
 
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Amazon Web Services
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
Gil Fink
 
Stencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has ArrivedStencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has Arrived
Gil Fink
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
James Titcumb
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
James Titcumb
 
Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017
Ike Ellis
 
reactjs-quiz..docs.pdf
reactjs-quiz..docs.pdfreactjs-quiz..docs.pdf
reactjs-quiz..docs.pdf
AyanSarkar78
 
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
Sencha
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Ehe
inovex GmbH
 
Kite SDK: Working with Datasets
Kite SDK: Working with DatasetsKite SDK: Working with Datasets
Kite SDK: Working with Datasets
Cloudera, Inc.
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial EnAnkur Dongre
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at Microsoft
ThousandEyes
 

Similar to Introducing ExtReact: Adding Powerful Sencha Components to React Apps (20)

Introduction to Spring Boot.pdf
Introduction to Spring Boot.pdfIntroduction to Spring Boot.pdf
Introduction to Spring Boot.pdf
 
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
ReactJS Tutorial For Beginners | ReactJS Redux Training For Beginners | React...
 
React native app with type script tutorial
React native app with type script tutorialReact native app with type script tutorial
React native app with type script tutorial
 
Developing components and extensions for ext js
Developing components and extensions for ext jsDeveloping components and extensions for ext js
Developing components and extensions for ext js
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
Building Content Recommendation Systems Using Apache MXNet and Gluon - MCL402...
 
Stencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrivedStencil the time for vanilla web components has arrived
Stencil the time for vanilla web components has arrived
 
Stencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has ArrivedStencil: The Time for Vanilla Web Components has Arrived
Stencil: The Time for Vanilla Web Components has Arrived
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
 
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
 
Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017Dive Into Azure Data Lake - PASS 2017
Dive Into Azure Data Lake - PASS 2017
 
reactjs-quiz..docs.pdf
reactjs-quiz..docs.pdfreactjs-quiz..docs.pdf
reactjs-quiz..docs.pdf
 
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
SenchaCon 2016: Building a Faceted Catalog of Video Game Assets Using Ext JS ...
 
React mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche EheReact mit TypeScript – eine glückliche Ehe
React mit TypeScript – eine glückliche Ehe
 
Real World MVC
Real World MVCReal World MVC
Real World MVC
 
Kite SDK: Working with Datasets
Kite SDK: Working with DatasetsKite SDK: Working with Datasets
Kite SDK: Working with Datasets
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Ejb3 Struts Tutorial En
Ejb3 Struts Tutorial EnEjb3 Struts Tutorial En
Ejb3 Struts Tutorial En
 
Automating Performance Monitoring at Microsoft
Automating Performance Monitoring at MicrosoftAutomating Performance Monitoring at Microsoft
Automating Performance Monitoring at Microsoft
 

More from Sencha

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
Sencha
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
Sencha
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
Sencha
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
Sencha
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
Sencha
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
Sencha
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
Sencha
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
Sencha
 
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
Sencha
 
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
Sencha
 

More from Sencha (10)

Breathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web ComponentsBreathe New Life into Your Existing JavaScript Applications with Web Components
Breathe New Life into Your Existing JavaScript Applications with Web Components
 
Ext JS 6.6 Highlights
Ext JS 6.6 HighlightsExt JS 6.6 Highlights
Ext JS 6.6 Highlights
 
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil ManvarSenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
SenchaCon 2016: Developing and Delivering Quality Code, Frequently - Neil Manvar
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
 
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory HardySenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
SenchaCon 2016: JavaScript is Great but Stop Writing It - Rory Hardy
 
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
SenchaCon 2016: Accessibility, Teamwork & Ext JS: A Customer Success Story - ...
 
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
SenchaCon 2016: Using Ext JS 6 for Cross-Platform Development on Mobile - And...
 
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay PlatonovSenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
SenchaCon 2016: Handling Undo-Redo in Sencha Applications - Nickolay Platonov
 
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
SenchaCon 2016: Turbocharge your Ext JS App - Per Minborg, Anselm McClain, Jo...
 
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
SenchaCon 2016: Integrating Geospatial Maps & Big Data Using CartoDB via Ext ...
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 

Introducing ExtReact: Adding Powerful Sencha Components to React Apps

  • 1. © 2017 Sencha Inc. • CONFIDENTIAL • Introducing ExtReact:Adding Powerful Sencha Components to ReactApps Mark Brocato Engineering Director, Sencha @mockaroodev
  • 2. © 2017 Sencha Inc. • CONFIDENTIAL • Ext JS Ext JS Components Ext JS Framework
  • 3. © 2017 Sencha Inc. • CONFIDENTIAL • React: A Component Framework w/o Components Ext JS Components Ext JS Framework ExtReact React.js
  • 4. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Use All Ext JS Components in React
  • 5. © 2017 Sencha Inc. • CONFIDENTIAL • Motivation for ExtReact • No complete component libraries available for React • Dependency fatigue • Form without function • Head start • Data-driven, enterprise apps
  • 6. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact: 100+ Components • Grid • List • Tree • Calendar • Layouts • Form Fields • Animations • Charts • D3 Visualizations
  • 7. © 2017 Sencha Inc. • CONFIDENTIAL • @extjs/reactor GitHub: extjs-reactor
  • 8. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact vs Ext JS + React ExtReact • Separate license from Ext JS (annual subscription, perpetual distribution rights) • Streamlined installation (NPM) • Modern toolkit only (Ext JS 6.5) Ext JS + Reactor • Use your existing Ext JS license • Traditional Ext JS installation process • Modern + Classic toolkits
  • 9. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Grid <Grid title="Stock Prices" store={this.store}> <Column text="Company" dataIndex="name"/> <Column text="Price" dataIndex="price" formatter='usMoney'/> <Column text="Change" dataIndex="priceChange"/> <Column text="% Change" dataIndex="priceChangePct"/> <Column text="Last Updated" dataIndex="lastChange" formatter='date("m/d/Y")'/> </Grid>
  • 10. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact for Ext JS Developers
  • 11. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true }); Ext JS ExtReact
  • 12. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped /> Ext JS ExtReact
  • 13. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped /> Ext JS ExtReact
  • 14. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} /> Ext JS ExtReact
  • 15. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} /> Ext JS ExtReact
  • 16. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } } }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} /> Ext JS ExtReact
  • 17. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} /> Ext JS ExtReact
  • 18. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { itemtap: function(list, index, target, record) { console.log(`Tapped ${record.get('name')}`) }, show: { single: true, fn: function() { // load store } } }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} itemTpl={data => ( <div> <div>{data.firstName} {data.lastName}</div> <div>{data.title}</div> </div> )} /> Ext JS ExtReact
  • 19. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { ... }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) items: [{ xtype: 'toolbar', docked: 'top' items: [{ xtype: 'button', text: 'Refresh' }] }] }); import { List } from '@extjs/ext-react'; <List store={contacts} grouped onItemTap={(list, index, target, record) => { console.log(`Tapped ${record.get('name')}`) }} onShow={{ single: true, fn: () => { // load store } }} itemTpl={data => ( <div> <div>{data.firstName} {data.lastName}</div> <div>{data.title}</div> </div> )} /> Ext JS ExtReact
  • 20. © 2017 Sencha Inc. • CONFIDENTIAL • Ext.create({ xtype: 'list', store: contacts, grouped: true, listeners: { ... }, itemTpl: ( '<div>' + '<div>{firstName} {lastName}</div>' + '<div>{title}</div>' + '</div>' ) items: [{ xtype: 'toolbar', docked: 'top' items: [{ xtype: 'button', text: 'Refresh' }] }] }); 20 import { List, Toolbar, Button } from '@extjs/ext-react'; <List store={contacts} grouped ... itemTpl={data => ( <div> <div>{firstName} {lastName}</div> <div>{title}</div> </div> )} > <Toolbar> <Button text="Refresh" /> </Toolbar> </List> Ext JS ExtReact
  • 21. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact Components are Themable • Each can be extended using SASS or Sencha Themer Triton Material iOS
  • 22. © 2017 Sencha Inc. • CONFIDENTIAL • Sencha Themer 22
  • 23. © 2017 Sencha Inc. • CONFIDENTIAL • FAQ • Controllers • ViewModels How much of the Ext JS framework will I use? Components Stores Models Grid, Tree, Calendar, etc… Flux (Redux, MobX, et al...)
  • 24. © 2017 Sencha Inc. • CONFIDENTIAL • Components Virtual DOM DOMExtReact? Ext JS FAQ Does ExtReact use the Virtual DOM?
  • 25. © 2017 Sencha Inc. • CONFIDENTIAL • FAQ Can I reuse components from pure Ext JS apps? import { reactify } from '@extjs/reactor'; const MyCustomComponent = reactify(MyPackage.MyCustomComponent); ... render() { return <MyCustomComponent ... /> }
  • 26. © 2017 Sencha Inc. • CONFIDENTIAL • ExtReact: Getting Set Up
  • 27. © 2017 Sencha Inc. • CONFIDENTIAL • Sign up for a trial at sencha.com npm login --registry=http://npm.sencha.com --scope=@extjs
  • 28. © 2017 Sencha Inc. • CONFIDENTIAL • Use Yeoman to create new apps npm install –g yo @extjs/generator-ext-react yo @extjs/ext-react
  • 29. © 2017 Sencha Inc. • CONFIDENTIAL • GitHub: sencha/extjs-reactor packages/reactor-modern-boilerplate packages/reactor-classic-boilerplate
  • 30. © 2017 Sencha Inc. • CONFIDENTIAL • Adding ExtReact to an Existing React App • npm install --save @extjs/reactor @extjs/ext-react • npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin
  • 31. © 2017 Sencha Inc. • CONFIDENTIAL • Adding Ext JS to an Existing React App • npm install --save @extjs/reactor • npm install --save-dev @extjs/reactor-webpack-plugin @extjs/reactor-babel-plugin • Download and unzip Ext JS from sencha.com
  • 32. © 2017 Sencha Inc. • CONFIDENTIAL • Webpack import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’ ... plugins: [ new ExtReactWebpackPlugin({ theme: 'theme-material' }), ]
  • 33. © 2017 Sencha Inc. • CONFIDENTIAL • Webpack import ExtReactWebpackPlugin from '@extjs/reactor-webpack-plugin’ ... plugins: [ new ExtReactWebpackPlugin({ theme: 'theme-material', // not needed for ExtReact sdk: '/path/to/extjs', toolkit: 'modern' packages: ['charts'] }), ]
  • 34. © 2017 Sencha Inc. • CONFIDENTIAL • Babel .babelrc { "plugins": [ "@extjs/reactor-babel-plugin" ] }
  • 35. © 2017 Sencha Inc. • CONFIDENTIAL • React App Launch import React from ’react'; import App from './App'; // app components import { launch } from '@extjs/reactor'; launch(<App/>); // replaces ReactDOM.render(<App/>, document.getElementById(‘root’))
  • 36. © 2017 Sencha Inc. • CONFIDENTIAL • Live Demos
  • 37. © 2017 Sencha Inc. • CONFIDENTIAL • Sencha Fiddle https://fiddle.sencha.com/?extreact
  • 38. © 2017 Sencha Inc. • CONFIDENTIAL • Q&A
  • 39. © 2017 Sencha Inc. • CONFIDENTIAL • Thank You!