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

[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
洪 鹏发
 

What's hot (20)

React JS: A Secret Preview
React JS: A Secret PreviewReact JS: A Secret Preview
React JS: A Secret Preview
 
Reactjs
ReactjsReactjs
Reactjs
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
React js
React jsReact js
React js
 
A Brief Introduction to React.js
A Brief Introduction to React.jsA Brief Introduction to React.js
A Brief Introduction to React.js
 
Its time to React.js
Its time to React.jsIts time to React.js
Its time to React.js
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
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 Native
React NativeReact Native
React Native
 
ReactJs
ReactJsReactJs
ReactJs
 
React native
React nativeReact native
React native
 
reactJS
reactJSreactJS
reactJS
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
learn what React JS is & why we should use React JS .
learn what React JS is & why we should use React JS .learn what React JS is & why we should use React JS .
learn what React JS is & why we should use React JS .
 
Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022Redux Toolkit - Quick Intro - 2022
Redux Toolkit - Quick Intro - 2022
 
React and redux
React and reduxReact and redux
React and redux
 
React Js Simplified
React Js SimplifiedReact Js Simplified
React Js Simplified
 

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 - 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
 
React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)React Native +Redux + ES6 (Updated)
React Native +Redux + ES6 (Updated)
 
REACT JS FULL COURSE | PERFECTKODE
REACT JS FULL COURSE | PERFECTKODEREACT JS FULL COURSE | PERFECTKODE
REACT JS FULL COURSE | PERFECTKODE
 

Recently uploaded

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 

Recently uploaded (20)

%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
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%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
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%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
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%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
 

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.