useEffect(): It enables for performing the side effects in the functional components.
Some examples of side effects are: fetching data, directly updating the DOM, and timers.
useEffect accepts two arguments. The second argument is optional.
useEffect(<function>, <dependency>)
We should always include the second parameter which accepts an array. We can optionally pass dependencies to useEffect in this array.
1. No dependency passed:
useEffect(() => {
//Runs on every render
});
2. An empty array:
useEffect(() => {
//Runs only on the first render
}, []);
3. Props or state values:
useEffect(() => {
//Runs on the first render
//And any time any dependency value changes
}, [prop, state]);
Example Code:
import Expenses from './component/expenses/Expenses';
import React,{useEffect, useState} from 'react';
import NewExpense from './component/newExpenses/NewExpense';
let _dummyExpense= [];
const App= ()=> {
const [expenses, setExpense]= useState(_dummyExpense);
function getExpenseData(){
fetch('http://localhost:65257/API/Expense/').then(
response=> {
return response.json();
}
).then(
data=> {
console.log(data);
setExpense(data);
}
);
}
useEffect(()=> {getExpenseData();},[]);
const addExpenseHandler= (expense)=>{
fetch('http://localhost:65257/API/Expense/',{
method:"Post",
body:JSON.stringify(expense),
headers:{'content-Type':'application/json'}
}).then(
response=> {
getExpenseData();
}
);
}
return <div className="app-container">
<h2>Parent App</h2>
<NewExpense onAddExpense={addExpenseHandler}></NewExpense>
<Expenses item={expenses}/>
</div>
}
export default App;
Effect Cleanup
Some effects require cleanup to reduce memory leaks.
Timeouts, subscriptions, event listeners, and other effects that are no longer needed should be disposed.
Reference: https://reactjs.org/, https://www.w3schools.com/
0 comments:
Post a Comment