@understyle

Как поменять состояние компонента внутри условия используя useEffect?

В хуке useEffect необходимо произвести итерацию массива arrTimes. arrTimes - массив дат.
Для примера: В dataTime приходит результат "2022-08-30 10:00", в selectedDate приходит "2022-08-30" . В случае, если даты совпадают, необходимо dateTime добавить в timeList.

В результате выполнения кода в timeList записывается только последнее значение, возвращающее истину, а не все результаты подходящие по условию. Насколько понял, это происходит потому, что хук useState является асинхронным.
Как в текущей задаче можно вывернуться, чтобы поместить в timeList весь список дат?
const [timeList,  setTimeList] = useState([]);
useEffect(() => {
        if (status) {
            arrTimes?.map(item => {
                const dateTime = item.attributes.datetime;           
                 if (dateTime.includes(selectedDate)) {
                    setTimeList([...timeList, dateTime]);
                 }
                });
        } 
        }, [status])
  • Вопрос задан
  • 23 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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