При нажатии на кнопку я могу задать объекту obj (из useState) любое свойство sorting.
obj.sorting = 'byAge';
и на следующем рендере оно будет сохранено в объекте. Почему значение не остается дефолтным, как я задал вначале? Разве это не главный принцип реакта?
Ок. Если даже я изменил свойство объекта, а внутри useState хранится только ссылка на этот объект, то зачем во всех туториалах используют такой код?
setObj({...obj, sorting:'byAge' })
если можно просто задать значение свойству объекта напрямую и будет тоже самое.
obj.sorting = 'byAge';
Ссылка на сандбокс
export default function App() {
const [obj, setObj] = useState({
someParameter: "anything",
sorting: "byName"
});
const [count, setCount] = useState(0);
console.log(`COUNT: ${count} OBJECT:`, obj);
const changeObj = () => {
obj.sorting = 'byAge';
setCount(count + 1);
//setObj({...obj, sorting:'byAge' }) ???????
};
return (
<div className="App">
<h1>{obj.sorting}</h1>
<p>{obj.someParameter}</p>
<button onClick={(e) => changeObj()}>CHANGE useState</button>
</div>
);
}