Быстро переключаемый переключатель вызывает мерцание пользовательского интерфейса (Firestore) - PullRequest
1 голос
/ 15 июня 2019

Выполнение двух быстрых «переключений переключателя» вызывает мерцание, поскольку React-Native Switch обновляет интерфейс пользователя для элемента второго переключателя до того, как Firestore DB завершит первое обновление переключателя.

У меня есть коллекция задач, где каждая задача имеет следующую схему:

task : {
 shared: {
   sample_user_id_1: true,
   sample_user_id_2: false
 }
}

Поскольку Firestore возвращает полный снимок документа (а не только конкретную часть документа, которая была обновлена), я вижу здесь два решения для устранения мерцания: 1) Отправлять и передавать только те изменения, которые были обновлены, по сути, одновременно прослушивая только часть документа (отправка изменения состояния независимо от Redux-Firestore), например:

if(newValue.shared[user_id_1] !== oldState.shared[user_id_1])
    dispatch(manualShareUpdate(user_id_1));

Это решение не кажется масштабируемым.

2) Измените структуру данных таким образом, чтобы каждый «общий» бит сохранялся независимо от других общих битов, например.

task : {
 id: task_1
}

Новая коллекция "task_shared" для каждой задачи, общая пара

task_shared : {
  task_id: sample_task_id
  user_id: sample_user_id,
  shared: true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...