SlideShare uma empresa Scribd logo
1 de 100
Baixar para ler offline
⚛
Josh Black
@joshblackfr
github.com/joshblack
C R E D I T S
Sebastian Markbåge
Christopher Chedeau
Joseph Savona
Michael Chan
T O D AY
• What is React?
• Why does it matter?
• How can we use it at scale?
W H AT I S R E A C T ?
React is a bridge from an imperative API
to a declarative API.
I M P E R AT I V E V S D E C L A R AT I V E
Imperative
Specify how to do something
var nums = [1, 2, 3, 4, 5];
// Double an array of values
for (var i = 0; i < nums.length; i++) {
nums[i] = nums[i] * 2;
}
Declarative
Specify the desired result
var nums = [1, 2, 3, 4, 5];
var doubled = nums.map(function (num) {
return num * 2;
});
🔥🔔
🔔
🔔
8
99+
🔥🔔
🔔
🔔
8
99+
Add label
Set label to 8
🔥🔔
🔔
🔔
8
99+
Add label
Add fire
Set label to 99+
🔥🔔
🔔
🔔
8
99+
– D A N A B R A M O V
“The complexity of the code to update the UI
increases as the square of the number of its states.”
if (count > 99) {
if (!hasFire()) { addFire(); }
} else {
if (hasFire()) { removeFire(); }
}
if (count === 1) {
if (hasLabel()) { removeLabel(); }
return;
}
if (!hasLabel()) { addLabel(); }
text = count > 99 ? '99+' : count;
getLabel().setText(text);
H O W C A N W E S O LV E T H I S ?
H O W C A N W E D O L E S S W O R K ?
function render(state) → DOM
function render(count) {
if (count > 99) {
return <Bell>
<Label>99+</Label>
<Fire />
</Bell>
} else if (count === 1) {
return <Bell />;
} else {
return <Bell><Label>{count}</Label></Bell>;
}
}
Imperative
Specify how to update the DOM
Declarative
Specify the desired result
– J I M S P R O C H
“React is a translation layer that takes in a description
of how things should be and executes the minimal
DOM operations to make it happen.”
🔥🔔
🔔
🔔
8
99+
W H AT R E A C T I S N ’ T
– S E B A S T I A N M A R K B Å G E
“React is not a virtual DOM library for you to render
to the DOM. It’s a tool for building out your toolbox
of components.”
W H AT I S A C O M P O N E N T ?
C O M P O N E N T S
C O M P O N E N T S
W H Y D O E S T H I S M AT T E R ?
• We can think about components in isolation, rather than about a
system as a whole
• We basically write a function that describes what should happen, and
React handles the transitions for you
function render(state) → DOM
– J O S E P H S AV O N A
“React makes it a lot easier to do client side
development because it’s a simpler mental model.”
AV O I D I N G D ATA M U TAT I O N
• Complexity is often strongly correlated with data mutation
• If you rewrite the complex code to avoid mutation, it is usually much
easier to reason about
W R I T E S I M P L E R C O D E
• Makes it difficult to do data mutation
• Makes it difficult to use an Imperative API
• As a result, your application is more manageable
W H AT D O E S A C O M P O N E N T
L O O K L I K E ?
class MyView {
render () {
return <div>Hi</div>
}
}
S E PA R AT I O N S O F C O N C E R N S
S E PA R AT I O N O F T E C H N O L O G I E S
J S
H T M L
C S S
J S
H T M L
C S S
presentation
J S
H T M L
C S S
behavior
<div>Hi</div> →
React.createElement('div', null, 'Hi');
class Person {
render () {
return <div>{this.props.name}</div>
}
}
class Person {
render () {
return React.createElement(
'div',
null,
this.props.name
);
}
}
<Person name="Jasmine" />
React.createElement(Person, { name: 'Jasmine' });
<Person name="Jasmine" /> →
<div>Jasmine</div>
O U T P U T S
S C A R E FA C T O R
class MyView extends Component {
render () {
return (
<div style={{ fontFamily: 'myFont' }}>
<section className="box">
<span role="tooltip" className="tooltip">
<a href="…" rel="help">Click here</a>
</span>
<button
onClick={this.handleOnClick}
role="button"
tabIndex={1}
/>
</section>
</div>
);
}
}
class MyView extends Component {
render () {
return (
<ContainerBox>
<HelpTip target="view-help">
Click Here
</HelpTip
<OkButton onAction={this.handleAction} />
</ContainerBox>
);
}
}
C O M P O N E N T S
ContainerBox
H
elpTip
O
kButton
C O M P O N E N T S
ContainerBox
HelpTip
OkButton
– S E B A S T I A N M A R K B Å G E
“Building up what primitives we need is not easy. But
we are the best people to say which components we
need.”
H O W D O E S I T S C A L E
– J O S E P H S AV O N A
“For new developers, it’s really hard to jump into the
system and begin making changes and making
decisions while still being confident that the overall
system will work.”
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
<Feed>
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
<Feed>
<Media>
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
<Feed>
<Media>
<Comment>
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
H O W H A R D C O U L D I T B E ?
*Infamous last words before all-nighter
R E A L LY H A R D
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed
/photo/a
/photo/b
/photo/c
/comment/a1
/comment/b1
/comment/c1
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed
/photo/a
/photo/b
/photo/c
/comment/a1
/comment/b1
/comment/c1
1
2
4
3
…
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed_with_photos_and_comments
…
….
…..
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed?count=1
/feed?count=1&offset=1
/feed?count=1&offset=2
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed?count=1
/feed?count=1&offset=1
/feed?count=1&offset=2
1
2
3
A R E W E D O N E Y E T ?
Pagination
State Management
Ordering
Request Coordination
Error Handling
Retry
Callbacks
Caching
Promises
A R E W E D O N E Y E T ?
– Y O U R D E S I G N E R
“Can we add one more thing?”
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
/feed
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
Endpoints
/feed
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
Endpoints
/feed
Presentation
joesavona
joesavona: classic view!
cpojer: so jealous right now
flipper
Endpoints
Presentation
Behavior
/feed
– J O S E P H S AV O N A
“Our simple change has turned into this. One change
requires a cascade of change throughout our
application. If you’re a new developer and you get a
task like add a photo, you might think it is easy but
then you have to understand the entire system in
order to make the change. This doesn’t scale.”
S O L U T I O N S
• Relay
• Falcor
• Flux
R E U S A B I L I T Y
C O M P O N E N T S
• Adhere to DRY
• Encapsulation
• Manage own state
G E T T I N G S TA R T E D
http://cdpn.io/e/WvLJXP
R E C A P
“React is a component model for abstraction.”
• We build up the primitive components of our application
• We compose them together to create abstractions for higher order
components
• React is the tool that allows us to build out our toolbox of
components specific to our application
class App {
render() {
return (
<section>
<ul>
<li>Item #1</li>
<li>Item #2</li>
<li>Item #3</li>
<li>Item #4</li>
<li>Item #5</li>
</ul>
</section>
);
}
}
class App {
render() {
return (
<section>
<List items={items} />
</section>
);
}
}
class Permalink {
render() {
return (
<Link
highlighted
href={this.props.href}
{this.props.children}>
</Link>
);
}
}
<Permalink href="..." />
class Permalink {
render() {
return (
<a
className="permalink-button"
href={this.props.href}
rel="bookmark">
{this.props.children}
</a>
);
}
}
<Permalink href="..." />
– S E B A S T I A N M A R K B Å G E
“Your job is not to create clever hacks to compose
two wrong abstractions together. Your job is to
compose the right abstractions for the right job.”
R E A C T TA R G E T S
• DOM
• SVG
• WebGL
• iOS
• Android
• Canvas
Let’s build something amazing together.
Any Questions?

Mais conteúdo relacionado

Semelhante a An Introduction to React -- FED Date -- IBM Design

TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScripttdc-globalcode
 
High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-EndDavid Simons
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Developmentallingeek
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedIlia Idakiev
 
A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014Pete Cheslock
 
Building React Applications with Redux
Building React Applications with ReduxBuilding React Applications with Redux
Building React Applications with ReduxFITC
 
Work Queues
Work QueuesWork Queues
Work Queuesciconf
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principlesEdorian
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0Vassilis Pitsounis
 
Let's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptLet's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptMathieu Savy
 
Gearman and CodeIgniter
Gearman and CodeIgniterGearman and CodeIgniter
Gearman and CodeIgniterErik Giberti
 
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes Michael Kimathi
 
Ben Agre - Adding Another Level of Hell to Reverse Engineering
Ben Agre - Adding Another Level of Hell to Reverse EngineeringBen Agre - Adding Another Level of Hell to Reverse Engineering
Ben Agre - Adding Another Level of Hell to Reverse EngineeringSource Conference
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!mold
 
Kogito: cloud native business automation
Kogito: cloud native business automationKogito: cloud native business automation
Kogito: cloud native business automationMario Fusco
 

Semelhante a An Introduction to React -- FED Date -- IBM Design (20)

TDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScriptTDC2016SP - Trilha Frameworks JavaScript
TDC2016SP - Trilha Frameworks JavaScript
 
React for Beginners
React for BeginnersReact for Beginners
React for Beginners
 
High quality Front-End
High quality Front-EndHigh quality Front-End
High quality Front-End
 
Docker for Development
Docker for DevelopmentDocker for Development
Docker for Development
 
Angular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of SpeedAngular server side rendering with NodeJS - In Pursuit Of Speed
Angular server side rendering with NodeJS - In Pursuit Of Speed
 
Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017
 
How to Redux
How to ReduxHow to Redux
How to Redux
 
A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014
 
Building React Applications with Redux
Building React Applications with ReduxBuilding React Applications with Redux
Building React Applications with Redux
 
Work Queues
Work QueuesWork Queues
Work Queues
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principles
 
The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0The Angular road from 1.x to 2.0
The Angular road from 1.x to 2.0
 
Deployments in one click!
Deployments in one click!Deployments in one click!
Deployments in one click!
 
Let's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptLet's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScript
 
BDD in my team: how we do it
BDD in my team: how we do itBDD in my team: how we do it
BDD in my team: how we do it
 
Gearman and CodeIgniter
Gearman and CodeIgniterGearman and CodeIgniter
Gearman and CodeIgniter
 
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes
Scaling Rails with Ruby-prof -- Ruby Conf Kenya 2017 by Ben Hughes
 
Ben Agre - Adding Another Level of Hell to Reverse Engineering
Ben Agre - Adding Another Level of Hell to Reverse EngineeringBen Agre - Adding Another Level of Hell to Reverse Engineering
Ben Agre - Adding Another Level of Hell to Reverse Engineering
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
 
Kogito: cloud native business automation
Kogito: cloud native business automationKogito: cloud native business automation
Kogito: cloud native business automation
 

Último

Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...121011101441
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfAsst.prof M.Gokilavani
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxwendy cai
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxPoojaBan
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEroselinkalist12
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncssuser2ae721
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniquesugginaramesh
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...srsj9000
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 

Último (20)

Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdfCCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
CCS355 Neural Networks & Deep Learning Unit 1 PDF notes with Question bank .pdf
 
What are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptxWhat are the advantages and disadvantages of membrane structures.pptx
What are the advantages and disadvantages of membrane structures.pptx
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptx
 
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETEINFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
INFLUENCE OF NANOSILICA ON THE PROPERTIES OF CONCRETE
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsyncWhy does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
Why does (not) Kafka need fsync: Eliminating tail latency spikes caused by fsync
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniques
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
young call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Serviceyoung call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Service
 

An Introduction to React -- FED Date -- IBM Design