乐观更新似乎在Firestore中没有那么快的预期效果。在我写入Firestore的时间和触发快照侦听器的时间之间,我看到的更新时间至少为200毫秒。我正在使用react本机firebase库,但我认为问题不太可能来自那里。该库只是本机SDK的一个薄包装层。我已经启用了离线持久性以确保其价值,但无论是否有互联网连接,行为都是相同的。
以下代码段说明了此问题:
class App extends React.Component{
componentDidMount(){
db.collection("cities").onSnapshot(function(qsnap) {
this.setState({cities: qsnap.docs.map(s => s.data())})
});
}
addCity(){
db.collection("cities").add({
name: Math.random(),
country: "Japan"
})
}
render(){
//After clicking add city, the new render doesn't happen until
//after a minimum time of 200 ms :(
<View>
<TouchableOpacity onPress={this.addCity}>Add city</TouchableOpacity>
{this.state.cities.map(c => <Text>{c.name}</Text>)}
</View>
}
}
我做错了什么或者能做些什么不同?我喜欢从数据存储订阅快照并直接从中呈现UI,然后直接写入数据存储区并通过乐观传播立即更新UI的模式。