Задать вопрос
@Danoneko

Как отфильтровать и перезаписать массив?

Сталкиваюсь с ошибкой превышения максимальной глубины обновления, при перезаписи массива объектов.

Я передаю пропс props.params, который есть не во всех вызовах компонента. Если он есть, то отфильтровать и перезаписать глобальную переменную bigData. при этом она в useState .

Пробовал и в самом хуке менять и в useEffect, но оно игнорит условие if. Что делаю не так?

let bigData; // изменяемый массив

  if (name === "courses") {
    bigData = dataCourse;
  }
  if (name === "tasks") {
    bigData = dataTask;
  }
  if (name === "meetings") {
    bigData = dataMeeting;
  }

  if (props.params !== undefined) {
    const params = props.params.split("_")[1];     //  props.params = "courses_0"
    const fel = bigData.filter((a) => a.id_course === params);    //  {id_course: 0}
    bigData = fel;
  }

  const [blocks, setBlocks] = useState(bigData);
  • Вопрос задан
  • 257 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zephire
Возможно выйдет вот так

const [blocks, setBlocks] = useState({});

  if (name === "courses") {
    setBlocks(dataCourse);
  }
  if (name === "tasks") {
    setBlocks(dataTask);
  }
  if (name === "meetings") {
    setBlocks(dataMeeting);
  }

  if (props.params !== undefined) {
    const params = props.params.split("_")[1];     //  props.params = "courses_0"
    const fel = bigData.filter((a) => a.id_course === params);    //  {id_course: 0}
    setBlocks(fel)
  }

  console.log(blocks)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 дек. 2024, в 16:13
50000 руб./за проект
23 дек. 2024, в 15:25
5000 руб./за проект
23 дек. 2024, в 14:47
4500 руб./за проект