快速切换开关会导致UI闪烁(Firestore)

时间:2019-06-15 05:56:01

标签: react-native google-cloud-firestore react-native-firebase react-redux-firebase

执行两个快速的“开关切换”会导致闪烁,因为React-Native Switch在Firestore DB完成第一个开关更新之前会更新第二个开关元素的UI。

我有一个任务集合,其中每个任务都具有以下架构:

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
}

0 个答案:

没有答案