SlideShare a Scribd company logo
1 of 32
Build web apps
with ReactJS
Hello!
I am Dhanushka
Software Engineer at Cambio Software Engineering
UCSC
Facebook Developer Circle - Colombo
2
Introduction
https://reactjs.org/
3
History
Jordan Walke, a software engineer at
Facebook
It was open-sourced at JSConf US in
May 2013
On Facebook's newsfeed in 2011
On Instagram since 2012
4
React Basics
A JavaScript library for building user
interfaces
16.5.2 is the latest version
5
React Basics
6
JSX − JSX is JavaScript syntax extension.
Components − React is all about components.
Unidirectional data flow − React implements
one-way data flow which makes it easy to
reason about your app.
React Basics
7
Covers only the view layer of the app
Complex React applications usually
require the use of additional libraries.
➔State management
➔Routing
➔Interaction with an API
Why React?
8
Uses virtual DOM which is a JavaScript object.
Can be used on client and server side as well as with
other frameworks.
Component and data patterns improve readability,
which helps to maintain larger apps.
Let’s get into React
9
Things needs to be installed
10
yarn or npm
a text editor
a web browser
Setting up the env
11
yarn init
Give main as src/index.js
yarn add react
yarn add react-dom
yarn add react-scriptsx
https://github.com/facebook/create-react-app
Setting up the environment
12
Folder Structure
public
--index.html
src
--index.js
package.json
Setting up the environment
13
index.html
<html lang="en">
<head>
<title>React App</title>
</head>
<body>
<div id="root"></div>
</body>
</html>
Create our first React component
14
import React from 'react'
import ReactDOM from 'react-dom'
Create our first React component
15
import React from 'react'
import ReactDOM from 'react-dom'
class HelloWorld extends React.Component {
render() {
return (
<div>
<div>Hello World!</div>
<div>Hello World!</div>
</div>
)
}
}
Create our first React component
16
import React from 'react'
import ReactDOM from 'react-dom'
class HelloWorld extends React.Component {
render() {
return (
<div>Hello World!</div>
)
}
}
ReactDOM.render(<HelloWorld />,
document.getElementById('root'));
Create our first React component
17
Next, Update package.json
"scripts": {
"start": "react-scripts start"
}
Create our first React component
18
yarn start
or
npm start
localhost:3000
Create our first React component
19
class HelloWorld extends React.Component {
render() {
return (
<div>Hello World!</div>
)
}
}
class HelloWorld extends React.Component {
render() {
return React.createElement("div", null, "Hello World");
}
Adding State to your Component
20
class WelcomeComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
name: 'John'
}
}
render() {
return (
<div>
Welcome {this.state.name}
</div>
)
}
}
Adding State to your Component
this.state inside of the constructor
will be part of that component’s state
component has the ability to modify
its own internal state. This can be
achieved by a method called
setState
21
Adding State to your Component
22
this.handleChange = this.handleChange.bind(this)
handleChange (e) {
this.setState({
name: e.target.value
})
}
Adding State to your Component
23
// Wrong
this.state.name = 'Hello';
Instead, use setState():
// Correct
this.setState({name: 'Hello'});
setState process
Last
Only update real
DOM with
necessary changes
First
Re-render virtual
DOM
Second
Run Diff algorithm
with previous virtual
DOM and new
virtual DOM
24
setState sends signal to notify our app some data has
changed,
Receiving State from Parent
Component
25
class Car extends React.Component {
render() {
return (
<div>This car is {this.props.color}.</div>
)
}
}
ReactDOM.render(<Car color="Red"/>,
document.getElementById('root'));
Receiving State from Parent
Component
26
yarn add prop-types
or
npm install prop-types
Receiving State from Parent
Component
27
Car.propTypes: {
color: PropTypes.string.isRequired
}
Car.defaultProps = {
color: 'Red'
}
Component LifeCycle
28
componentDidMount
Fired after the component mounted (after the initial render)
componentWillUnmount
Fired before the component will unmount
getDerivedStateFromProps
Fired when the component mounts and whenever the props change. Used
to update the state of a component when its props change
Let’s think in react!!
29
Simple ToDo App
Let’s build our ToDo App
30
npm
npm init react-app my-todo-app
Yarn
yarn create-react-app my-todo-app
create-react-app my-todo-app
npm i -g create-react-app
Let’s think in react!!
31
InputComponent
ShowListComponent
ItemComponent
Simple ToDo App
Thank you!
Any questions?
You can find me at:
Facebook @dhanushkach
dhanushka787@gmail.com
32

More Related Content

What's hot

What's hot (20)

Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
 
React js
React jsReact js
React js
 
React state
React  stateReact  state
React state
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Introduction to react_js
Introduction to react_jsIntroduction to react_js
Introduction to react_js
 
React JS - Introduction
React JS - IntroductionReact JS - Introduction
React JS - Introduction
 
React hooks
React hooksReact hooks
React hooks
 
ES6 presentation
ES6 presentationES6 presentation
ES6 presentation
 
React-JS.pptx
React-JS.pptxReact-JS.pptx
React-JS.pptx
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
Understanding react hooks
Understanding react hooksUnderstanding react hooks
Understanding react hooks
 
Introduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace ITIntroduction to React JS for beginners | Namespace IT
Introduction to React JS for beginners | Namespace IT
 
React js
React jsReact js
React js
 
Introduction to ReactJS
Introduction to ReactJSIntroduction to ReactJS
Introduction to ReactJS
 
React-JS Component Life-cycle Methods
React-JS Component Life-cycle MethodsReact-JS Component Life-cycle Methods
React-JS Component Life-cycle Methods
 
Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2Routing & Navigating Pages in Angular 2
Routing & Navigating Pages in Angular 2
 
React.js - The Dawn of Virtual DOM
React.js - The Dawn of Virtual DOMReact.js - The Dawn of Virtual DOM
React.js - The Dawn of Virtual DOM
 
Asynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & PromisesAsynchronous JavaScript Programming with Callbacks & Promises
Asynchronous JavaScript Programming with Callbacks & Promises
 

Similar to Build web apps with react js

Similar to Build web apps with react js (20)

Fundamental concepts of react js
Fundamental concepts of react jsFundamental concepts of react js
Fundamental concepts of react js
 
Intro react js
Intro react jsIntro react js
Intro react js
 
Learn react-js
Learn react-jsLearn react-js
Learn react-js
 
Getting Started with React v16
Getting Started with React v16Getting Started with React v16
Getting Started with React v16
 
React JS: A Secret Preview
React JS: A Secret PreviewReact JS: A Secret Preview
React JS: A Secret Preview
 
React - Start learning today
React - Start learning today React - Start learning today
React - Start learning today
 
React Hooks Best Practices in 2022.pptx
React Hooks Best Practices in 2022.pptxReact Hooks Best Practices in 2022.pptx
React Hooks Best Practices in 2022.pptx
 
React & Redux for noobs
React & Redux for noobsReact & Redux for noobs
React & Redux for noobs
 
Introduction to React for Frontend Developers
Introduction to React for Frontend DevelopersIntroduction to React for Frontend Developers
Introduction to React for Frontend Developers
 
How to create components in react js
How to create components in react jsHow to create components in react js
How to create components in react js
 
Simple React Todo List
Simple React Todo ListSimple React Todo List
Simple React Todo List
 
Introduction to react and redux
Introduction to react and reduxIntroduction to react and redux
Introduction to react and redux
 
How To Integrate Native Android App With React Native.
How To Integrate Native Android App With React Native.How To Integrate Native Android App With React Native.
How To Integrate Native Android App With React Native.
 
React outbox
React outboxReact outbox
React outbox
 
React + Redux + TypeScript === ♥
React + Redux + TypeScript === ♥React + Redux + TypeScript === ♥
React + Redux + TypeScript === ♥
 
ReactJS.pptx
ReactJS.pptxReactJS.pptx
ReactJS.pptx
 
ReactJS
ReactJSReactJS
ReactJS
 
slides.pptx
slides.pptxslides.pptx
slides.pptx
 
slides.pptx
slides.pptxslides.pptx
slides.pptx
 
ReactJs
ReactJsReactJs
ReactJs
 

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Recently uploaded (20)

ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 

Build web apps with react js

  • 2. Hello! I am Dhanushka Software Engineer at Cambio Software Engineering UCSC Facebook Developer Circle - Colombo 2
  • 4. History Jordan Walke, a software engineer at Facebook It was open-sourced at JSConf US in May 2013 On Facebook's newsfeed in 2011 On Instagram since 2012 4
  • 5. React Basics A JavaScript library for building user interfaces 16.5.2 is the latest version 5
  • 6. React Basics 6 JSX − JSX is JavaScript syntax extension. Components − React is all about components. Unidirectional data flow − React implements one-way data flow which makes it easy to reason about your app.
  • 7. React Basics 7 Covers only the view layer of the app Complex React applications usually require the use of additional libraries. ➔State management ➔Routing ➔Interaction with an API
  • 8. Why React? 8 Uses virtual DOM which is a JavaScript object. Can be used on client and server side as well as with other frameworks. Component and data patterns improve readability, which helps to maintain larger apps.
  • 10. Things needs to be installed 10 yarn or npm a text editor a web browser
  • 11. Setting up the env 11 yarn init Give main as src/index.js yarn add react yarn add react-dom yarn add react-scriptsx https://github.com/facebook/create-react-app
  • 12. Setting up the environment 12 Folder Structure public --index.html src --index.js package.json
  • 13. Setting up the environment 13 index.html <html lang="en"> <head> <title>React App</title> </head> <body> <div id="root"></div> </body> </html>
  • 14. Create our first React component 14 import React from 'react' import ReactDOM from 'react-dom'
  • 15. Create our first React component 15 import React from 'react' import ReactDOM from 'react-dom' class HelloWorld extends React.Component { render() { return ( <div> <div>Hello World!</div> <div>Hello World!</div> </div> ) } }
  • 16. Create our first React component 16 import React from 'react' import ReactDOM from 'react-dom' class HelloWorld extends React.Component { render() { return ( <div>Hello World!</div> ) } } ReactDOM.render(<HelloWorld />, document.getElementById('root'));
  • 17. Create our first React component 17 Next, Update package.json "scripts": { "start": "react-scripts start" }
  • 18. Create our first React component 18 yarn start or npm start localhost:3000
  • 19. Create our first React component 19 class HelloWorld extends React.Component { render() { return ( <div>Hello World!</div> ) } } class HelloWorld extends React.Component { render() { return React.createElement("div", null, "Hello World"); }
  • 20. Adding State to your Component 20 class WelcomeComponent extends React.Component { constructor(props) { super(props); this.state = { name: 'John' } } render() { return ( <div> Welcome {this.state.name} </div> ) } }
  • 21. Adding State to your Component this.state inside of the constructor will be part of that component’s state component has the ability to modify its own internal state. This can be achieved by a method called setState 21
  • 22. Adding State to your Component 22 this.handleChange = this.handleChange.bind(this) handleChange (e) { this.setState({ name: e.target.value }) }
  • 23. Adding State to your Component 23 // Wrong this.state.name = 'Hello'; Instead, use setState(): // Correct this.setState({name: 'Hello'});
  • 24. setState process Last Only update real DOM with necessary changes First Re-render virtual DOM Second Run Diff algorithm with previous virtual DOM and new virtual DOM 24 setState sends signal to notify our app some data has changed,
  • 25. Receiving State from Parent Component 25 class Car extends React.Component { render() { return ( <div>This car is {this.props.color}.</div> ) } } ReactDOM.render(<Car color="Red"/>, document.getElementById('root'));
  • 26. Receiving State from Parent Component 26 yarn add prop-types or npm install prop-types
  • 27. Receiving State from Parent Component 27 Car.propTypes: { color: PropTypes.string.isRequired } Car.defaultProps = { color: 'Red' }
  • 28. Component LifeCycle 28 componentDidMount Fired after the component mounted (after the initial render) componentWillUnmount Fired before the component will unmount getDerivedStateFromProps Fired when the component mounts and whenever the props change. Used to update the state of a component when its props change
  • 29. Let’s think in react!! 29 Simple ToDo App
  • 30. Let’s build our ToDo App 30 npm npm init react-app my-todo-app Yarn yarn create-react-app my-todo-app create-react-app my-todo-app npm i -g create-react-app
  • 31. Let’s think in react!! 31 InputComponent ShowListComponent ItemComponent Simple ToDo App
  • 32. Thank you! Any questions? You can find me at: Facebook @dhanushkach dhanushka787@gmail.com 32

Editor's Notes

  1. It isn't necessary to use JSX in React development, but it is recommended. Allows us to write HTML like syntax which gets transformed to lightweight JavaScript objects. This will help you maintain the code when working on larger scale projects.
  2. This will improve apps performance, since JavaScript virtual DOM is faster than the regular DOM. A JavaScript representation of the actual DOM
  3. This will improve apps performance, since JavaScript virtual DOM is faster than the regular DOM. A JavaScript representation of the actual DOM
  4. This package serves as the entry point to the DOM and server renderers for React.