执行两个快速的“开关切换”会导致闪烁,因为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
}