Реакция хуков - для повторной инициализации массива на пустой - PullRequest
0 голосов
/ 16 апреля 2020

у меня есть одно состояние, записанное как

const[checkboxIds,setCheckboxIds]=useState([])

, и у меня есть один useEffect как


useEffect(()=>{
    if (!isEmpty(currentData)) {
      currentData.forEach(id => {
        checkboxIds.push(id);
      });
      setCheckboxIds(checkboxIds);
    }
},[currentData])

, и я показываю счет как {checkboxIds} и отображает правильный

Опять же, у меня есть 4 вкладки, такие как алфавиты, цвета, животные и машины, когда я нажимаю на каждую вкладку текущие данные изменяется, поэтому число флажков также должно измениться. оно меняется, но также увеличивается предыдущий счетчик

Например, если у меня есть 10 объектов в алфавитах, его показывается как 10 при начальной загрузке страницы и когда я нажимаю на цвета (у него 5 объектов), его счетчик показаний равен 15 (он должен показывать только 5), а когда я нажимаю на животных (у него есть 10 объектов), счетчик показывается как 25 (он должен показывать его как 10)

, поэтому я понял, что somwhere setCheckboxIds должен быть заново, но для меня это не работает

1 Ответ

2 голосов
/ 16 апреля 2020

Я думаю, вам нужно обновить свой useEffect до

useEffect(()=>{
    if (!isEmpty(currentData)) {
      const updatedCheckboxIds = [];
      currentData.forEach(id => {
        updatedCheckboxIds.push(id);
      });
      setCheckboxIds(updatedCheckboxIds);
    }
},[currentData])

. Таким образом, для каждого эффекта он создаст новый массив checkboxIds и вставит в него sh идентификаторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...