Reputation: 91
I've built a simple expense tracker app on react like such
How do I now make it such that the expenselog
object avoids reverting back to the default state on refreshing but preserves the new expenses that were added by the client
import { useState } from 'react';
function App() {
var [expenselog,setExpenselog] = useState([
{
name: "Expense1",
amount: 1000
},
{
name: "Expense2",
amount: 100
}
]);
var [count, setCount] = useState(0);
var [name, setName] = useState("");
const inputChangeHandler = (e) => {
setName(e.target.value);
}
const inputChangeHandler2 = (e) => {
setCount(e.target.value);
}
const clickHandler = () => {
if (name === "" || count === "" || count <= 0) {
alert("Please enter a name and amount");
} else {
setExpenselog([...expenselog, {name: name, amount: count}]);
document.querySelector('.inputField').value = "";
document.querySelector('.inputField2').value = 0;
setCount(0);
setName("");
}
}
var sum=0;
for (var i = 0; i < expenselog.length; i++) {
sum = parseInt(sum) + parseInt(expenselog[i].amount);
}
return (
<div className="App">
<input onChange={inputChangeHandler} className='inputField'/>
<input type={"number"} onChange={inputChangeHandler2} className='inputField2'/>
<button onClick={clickHandler}>Add Expense</button>
<br/>
<h1>Total money spent : {sum}</h1>
{expenselog.map(expense => <p>{expense.name} - {expense.amount}</p>)}
</div>
);
}
export default App;
Upvotes: 0
Views: 87
Reputation: 556
Select betweeon localStorage or sessionStorage.
localStorage
can be shared between tabs, and will persist if you close the tab.
sessionStorage
can not be shared between tabs. When you close tab, it will disappear.
Upvotes: 1