@Paul14

Почему обновляется значение useState?

При нажатии на кнопку я могу задать объекту 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>
  );
}
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы