Redux в собственном приложении реагирует очень медленно с большим количеством данных - PullRequest
0 голосов
/ 11 января 2019

У меня есть большой массив json-объектов, которые я храню в одной редукционной переменной (~ 8 тыс. Элементов, каждый с объектом по 1 килобайту каждый на общую сумму 8 МБ). Похоже, что это делает медленные вызовы медленным, даже для самых тривиальных действий, и редукторов, которые ничего не делают. Например, при вызове этого действия doNothing() и редуктора время ожидания устройства составляет 500 мс без запуска в отладчике:

// action
export const doNothing = () => {
  return {
    type: DO_NOTHING
  };
};

// reducer
export default (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case DO_NOTHING: {
      return state;
    }
    default:
      return state;
  }
};

Моя лучшая попытка профилировать эту проблему - через медленный журнал, где я нашел цифру 500 мс для вызова избыточности в моем компоненте реакции. Для меньшего набора данных (~ 500 элементов) я все еще получаю ожидание, но оно ближе к 100 мс. Это все на устройстве, и оно замедляется на симуляторе и отладчике. Я тестирую это на простом представлении с помощью всего лишь кнопки, чтобы исключить сложности от дорогого повторного выбора и повторного рендеринга. Возможное осложнение заключается в том, что я использую redux-offline, который сохраняет хранилище с избыточностью в AsyncStorage, однако при отключении сохранения у меня получается идентично низкая производительность.

В идеале я обращаюсь к узким местам напрямую, но я также открыт для обходных путей. Я попытался обернуть вызовы действий в setTimeout, но это, похоже, задерживает замедление в моем собственном приложении.

Заранее спасибо за любые предложения!

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