Как обновить состояние объекта с помощью перехвата useState

#reactjs

#reactjs

Вопрос:

Пытаюсь обновить состояние объектов с помощью перехвата useState, но, похоже, это не работает. Просто интересно, может ли кто-нибудь определить, что я здесь делаю не так:

Это мое useState:

 const [selectState, setSelectState] = React.useState({
  level1: 0,
  level2: 0,
  level3: 0,
});
  

Компонент, в котором я пытаюсь обновить состояние:

 <Button
   onClick={() => setSelectState({ ...selectState, level: 1 })}
   selected={selectState === 1}
   text="Blue"
 />
  

Ответ №1:

Я вижу пару проблем в вашем коде:

  • setSelectState({ ...selectState, level: 1 }) — вы обновляете level свойство, но оно отсутствует в состоянии. Таким образом, вы добавляете новое свойство в состояние вместо обновления существующего.

  • selected={selectState === 1} selectedState это объект. Итак, вы сравниваете число с объектом и из-за строгого оператора равенства ( === ) выполняется следующее условие:

     selectState === 1
      

    никогда не будет вычисляться true .