Link to codesandbox-> https://codesandbox.io/s/musing-cori-hsjl0o?file=/src/App.js
I just want to clarify what is the better or correct way to update the state when modifying/updating a part of an existing state . Way 1 or Way 2 (highlighted the same above)
Please can someone share his/her views on this? Thanks.
import React from "react";
export default function App() {
const [boxes, setBoxes] = React.useState([
{ number: 0, name: "BOX1" },
{ number: 0, name: "BOX2" },
{ number: 0, name: "BOX3" }
]);
function incHandler(boxName) {
*** //Way 1
// let new_boxes = boxes.map((e) => {
// if (e.name === boxName) {
// e.number++;
// }
// return e;
// });
// setBoxes([...new_boxes]);***
*** //Way 2
setBoxes((prev) => {
let new_boxes = prev.map((e) => {
if (e.name === boxName) {
e.number++;
}
return e;
});
return [...new_boxes];
});***
}
return (
<div className="App">
{boxes.map((e) => {
return (
<div key={e.name}>
{e.name}
{e.number}
<button
onClick={() => {
incHandler(e.name);
}}
>
+
</button>
</div>
);
})}
</div>
);
}