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