const App = () => {
const [Men, setMen] = useState({ name: "dario" });
console.log(Men)
return (
<div>
<button
onClick={() => {
Men.name = "dario1"
setMen(Men);
}}
>
Add
</button>
<button
onClick={() => {
Men.name = "dario2"
setMen({ ...Men });
}}
>
Add1
</button>
</div>
);
};
setMen(Men)
не будет ре-рендера (состояние не изменится), потому что вы в сеттер передаёте тот же объект, который уже лежит в стейте (поскольку сравниваются объекты по ссылке, а изменение поля name
ссылку не меняет).setMen({ ...Men })
вы передаёте копию (новый объект), поэтому будет ре-рендер. И Men.name = "dario2"
тут ни при чем. setMan({ ...Man, name: 'new name' });