Обновление состояния Redux не вызывает повторную визуализацию во время анализа большого набора данных - PullRequest
0 голосов
/ 10 июля 2020

Я хочу, чтобы во время анализа большого набора данных отображался прогресс (это может занять несколько секунд). Следующие действия обрабатываются внутри оценки Promise (.then() вызывает API выборки браузера). Я создал функцию генератора, которая будет генерировать объекты, чтобы я мог обрабатывать изменение состояния редукции вне синтаксического анализатора logi c:

function* parseSDF(name) {
  const parser = new Parser(name, null)
  while (parser.next()) {
    // ... parsing data
    yield {...data}
  }
}

Затем я перебираю генератор (я использую машинописный текст с --downlevelIteration флаг включен) и каждые 50 или около того итераций я хочу обновлять состояние

const processMs = (sdf) => {
  const progress = parseSDF(sdf);

  const ms = [];
  let counter = 0;
  for (let m of progress) {
    ms.push({ ...m, id: ++counter });
    if (counter % 50 === 0) {
      setMsLoadingProgress(counter);
      console.log(counter);
    }
    setMsLoadingProgress(counter);
  }
  setMs(ms);
};

Однако, хотя консоль регистрирует прогресс с ~ 0,5 секунды между каждым журналом, реакция не выполняется повторно при изменении хранилища redux . Вместо этого он повторно отображает один раз после завершения синтаксического анализа, поэтому это не проблема с тем, как redux подключен для реагирования.

  1. Почему реакция не перерисовывается каждый раз, когда я меняю состояние?
  2. Как я могу заставить это работать?
  3. Есть ли лучший шаблон для отображения прогресса в моем интерфейсе?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...