导航到页面时,我传递了诸如“折扣”之类的参数,并在render()
中显示该数字,但是我在导航至该类的开始就立即调用onSnapshot()
。现在,我只想在开始时显示参数的值,以防万一有变化获取它。
附言其背后的原因是我正在尝试尽可能减少获取次数。
check_amount_left() {
const getSelected = this.props.navigation.state.params;
var ref = db().collection('discounts').where("rest_id", "==", getSelected.rest_id)
ref.onSnapshot((querySnapshot => {
var amount = querySnapshot.docs.map(doc => doc.data().amount);
this.setState({
check_for_amount: amount.toString()
});
}));
}
渲染方法:
render(){
const getSelected = this.props.navigation.state.params;
return(
<View>
{getSelected.amount}
</View>
)
}
最佳答案
要知道服务器上的数据已发生某些更改,服务器将需要告知客户端该更改。在Firestore的情况下,服务器始终告知客户端文档的整个新状态。
因此,减少服务器发送给客户端的数据量的唯一方法是减小您正在收听的文档的大小。
但是,那样的话,它将不会减少获取的次数,因为服务器将需要阅读文档以了解文档已更改。
关于javascript - 是否可以在实际获取之前检查onSnapshot()是否已找到更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60009033/