setState внутри карты

#javascript #reactjs #react-hooks #state

#javascript #reactjs #реагирующие хуки #состояние

Вопрос:

Я должен проверить, является ли значение объекта пустым и setstate, но проблема в том, что мои данные являются объектом, и я просматриваю их для проверки, является ли значение false или true. Я знаю, что я не могу установить состояние внутри карты, но не могу найти хороший способ сделать это. Я использую хуки

Комментарии:

1. Какую переменную с отслеживанием состояния вам нужно обновить?

2. const [send, setSend] = useState(true); Я хочу сохранить логическое значение внутри переменной ex. send, если контрольное значение равно false, установите значение отправки в false, если не true

Ответ №1:

Чтобы настроить свой код, просто добавьте setSend(isAllowed) after . Но было бы более уместно использовать .some :

 setSend(
  Object.values(data).some(
    dataItem => dataItem.items.some(
      item => item.check === false
    )
  )
);
 

Комментарии:

1. Я думаю Object.values(data) , что это был бы массив объектов с ключом items , не так ли?

2. да, Object.values(data) возвращает массив моих элементов

3. это не работает. Необработанное отклонение (ошибка): слишком много повторных рендерингов. React ограничивает количество отображений, чтобы предотвратить бесконечный цикл.

4. @Narine Можете ли вы опубликовать полный код? Когда вы хотите send , чтобы переменная обновлялась после монтирования компонента, или вы просто хотите, чтобы она была установлена один раз?

5. Я поместил его внутри нажатия кнопки, теперь он не рендерится повторно, но его состояние не меняется, теперь у меня есть 3 false, что означает, что 3items.check имеет значение true, 2 true, но оно всегда остается верным. Я хочу сказать, что если одно из значений item.check равно false, установите значение false