React Native Redux - проблема с зависанием приложения - PullRequest
0 голосов
/ 21 февраля 2019

Я создаю приложение React Native (с использованием Redux (Thunk)), где в последнее время я сталкиваюсь с проблемами производительности, для которых мне не удалось найти хорошее решение.

Проблема заключается в том, чтопользовательский интерфейс / приложение зависает / блокируется каждый раз, когда я вызываю действие, независимо от того, изменяется состояние или нет.Приложение работает с данными учетных записей, и проблема возникла, когда количество учетных записей выросло до примерно 3 тыс. Учетных записей.Я проверил следующее:

  1. Время, необходимое для создания нового состояния в редукторе.
  2. Для ненужных визуализаций.
  3. Любые манипуляции с данными, выполняемые в mapStateToProps или где-либо еще.

Ничто из вышеперечисленного не занимает много времени или кажется проблемой.Пример, на котором я тестирую, представляет собой список учетных записей с анимированным всплывающим окном для фильтрации.Когда я добавляю фильтр во всплывающем окне и сохраняю его (обновляет магазин и закрывает всплывающее окно), я вижу, что сразу после всплывающего окна фильтруются учетные записи, но анимация пользовательского интерфейса / всплывающего окна останавливается на 2-3 секунды, прежде чемзакрытие.

Данные хранятся с идентификаторами в качестве индекса для учетных записей и отдельным объектом для фильтров:

{ 
    accountByIds: { acc1: {...}, acc2: {...} }, 
    filters: {...} 
}

Мне было интересно, поможет ли использование ImmutableJS, но по мере роста приложениядовольно большой, и я не уверен, что это поможет, так как проблема, похоже, не для многих рендеров и т. д., я не изменил ее.

В настоящее время я обновляю магазин, как показано ниже:

return {

          ...state,
          filters: {
                ...state.filters,
                newFilter
          }
}

Подводя итог, кажется, что при обновлении магазина соответствующие рендеры вызываются сразу, но затем приложение на мгновение зависает.

Если кто-то можетпролить свет на это или указать мне правильное направление, я был бы признателен.

...