πΉοΈ Learn Fundamentals of ReactJS and Build Counter App π¦
Counter app using react
Want to improve this page? Raise a issue on @github.
Whats on this page?
- Components π§©: the building blocks of a React application
- Functional vs Class Components ποΈ: the two types of components in React and their differences
- Named and Default Import/Export π‘π¦: how to import and export components in React
- JSX π»: a syntax extension for JavaScript that allows us to write HTML-like code in our JavaScript
- Props π: how to pass data from a parent component to a child component
- Default Props π·οΈπ: how to set default values for props
- State π: a way to manage data within a component
- Creating a Counter App π’: a hands-on example to demonstrate the concepts we covered
- Questions to Solve β: some practice questions to test your understanding of the material
- Simple Task π€: a hands-on exercise to reinforce your learning
πΊ Watch Now
Notes
In ReactJS, everything is a component
For example, in our Youtube UI, we have multiple components, such as:
- Banner
- Nav
- Images
- Title
- Review
A component is a simpler regular JavaScript function that is customizable, and we can reuse it in our code to build UIs.
2 Types of Components:
- Functional Components:
- Functional components are a more recent addition to React and are essentially JavaScript functions that return JSX.
- They are simpler and more concise.
- we start it with a function.
function Greeting(){
return <h1>Hello</h1>
}
- Class Components:
- Class components are the older way of defining components in React.
- They are defined as ES6 classes that extend the
React.Component
class. - class components were being used in 2012, now they are history.
//we also need to import it at top of js file
import {Componet} from "react";
class Forest extends Components{
render(){
return <h1>Hello</h1>
}
}
Name & Default Import and Export:
index.js
is the entry point of our app.
root
id is provided in our index.html where we want to put that content in.
- Hence, we are dynamically adding all the content
in index.js
we are importing our app or app.js
using:
import App from "./App";
but before this, we MUST export
our App in app.js
:
export default App;
Basically, for using the functional component in the index.js we must export it.
Name Export:
App.js
export function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
-
Now we canβt change the name.
-
We will have to write the exact name in
index.js
import {App} from "./App";
const rootElement = document.getElementById("root");
const root = createRoot(rootElement);
root.render(
<StrictMode>
<App />
</StrictMode>
);
Default Export:
App.js
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
export default App;
index.js
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App";
const rootElement = document.getElementById("root");
const root = createRoot(rootElement);
root.render(
<StrictMode>
<App />
</StrictMode>
);
//Now instead of `App` we can use any other variable name too.
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import Greetings from "./App";
const rootElement = document.getElementById("root");
const root = createRoot(rootElement);
root.render(
<StrictMode>
<Greetings />
</StrictMode>
);
Components in React:
function Greeting(){
return <h1>Hello</h1>
}
Components are regular JavaScript functions. But there is a difference between regular js functions and components:
- In regular JS functions we can start the name of func. with
lowercase
letter, but with components we can not. - The console will not recognize it.
JSX:
function App() {
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some magic happen!</h2>
<Greeting/>
</div>
);
}
What is this?
- It looks like simple HTML but it is not.
<Greeting/>
tag is not in HTML.className
is also not in HTML.
Note This is JSX: syntax extension for JavaScript, which helps us to write HTML markup language in the JavaScript itself.
we use className
because class
is a reserved keyword.
JSX = JS + HTML
Props:
Props are the properties of the component that are used to pass data from parent
component to child
component.
function Greeting({name}){
return <h1>Hello {name}</h1>
}
function App() {
return (
<div className="App">
<Greeting name="Sanskriti"/>
</div>
);
}
export default App;
Using Props:
function Greeting(props){
return <h1>Hello {props.name}, {props.greeting}</h1>
}
function App() {
return (
<div className="App">
<Greeting name="Sanskriti" greeting="morning"/>
</div>
);
}
Default props:
when we donβt have a value, we can put a default value:
function Greeting({name,greeting="morning"}){
return <h1>Hello {name}, {greeting}</h1>
}
function App() {
return (
<div className="App">
<Greeting name="Sanskriti" greeting="morning"/>
</div>
);
}
Note Props are Read Only!!!! (V.V.Imp)
State in ReactJS:
state is the data or React object which is used to handle the user interactivity!
- to use it -
import {useState} from "react";
//array destructuring
const [value, setterfunction] = useState(0);