当我导航到某个页面时,我会传递一些参数,例如“折扣”,并且我会在 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/