Крючки setState всегда на шаг позади - PullRequest
0 голосов
/ 09 апреля 2019

Я использовал хук useState. Предполагалось, что метод заданного состояния должен вызываться (в хуках) каждый раз, когда изменяется значение раскрывающейся кнопки, но заданное состояние всегда происходит на один шаг позади. Я ve seen solutions with the traditional setState methods of class based components, but how do i fix this using hooks использую государство?

  <Dropdown
    placeholder='Select College'
    search
    fluid
    selection
    options={collegeSelection}
    onChange={selectCollegeHandler}
  />
method:
   const selectedCollegeHandler = (event, data) => {
     setSelectedCollege(data.value);
   }
State:
   const[selectedCollegeState, setSelectedCollege] = useState(' ');

1 Ответ

0 голосов
/ 10 апреля 2019

Попробуй это. Используя функциональную форму setState(), вы можете «обмануть» Реагирование на мысль, что ваше новое состояние зависит от вашего последнего состояния, поэтому оно выполняет обновление сразу. Это помогло мне в ряде случаев. Посмотрим, поможет ли это вам тоже.

method:
  const selectedCollegeHandler = (event, data) => {
    setSelectedCollege((prevState) => {
      return data.value
    });
  }

Функциональные обновления

Если новое состояние вычисляется с использованием предыдущего состояние, вы можете передать функцию setState. Функция получит предыдущее значение и вернуть обновленное значение. Вот пример компонент счетчика, который использует обе формы setState:

Источник: Hooks API

...