javascript - 是否可以在实际获取之前检查 onSnapshot() 是否发现了更改?
问题描述
当我导航到一个页面时,我传递了一些参数,例如“折扣”,并且我在其中显示了该数字,render()
但我onSnapshot()
在导航到该类的开始时正在调用。现在,我想在开始时只显示参数的值,以防有更改获取它。
PS这背后的原因是我试图尽可能减少提取次数。
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 的情况下,服务器总是告诉客户端文档的整个新状态。
因此,减少服务器发送给客户端的数据量的唯一方法是减少您正在收听的文档的大小。
但是如果发生这种情况,它不会减少获取次数,因为服务器需要读取文档才能知道它已经更改。
推荐阅读
- r - R tkinsert 无法识别“\\n”
- mips - MIPS 存储字节
- python - 没有模型和数据库的 Django 项目
- c++ - 从缓冲区构建 QImage
- javascript - 我可以使用传统的 JS 语法将 JSX 标签相互嵌套吗?
- mysql - SQL:查找连接到单个表的记录,其中同一列具有不同的值
- amazon-web-services - 授权标头是由 Cognito Authorizer 传递给 lambda 函数的吗?
- python - 如何在另一个ndarray中找到一个ndarray的索引
- splunk - 配置 Splunk 以提高可用性
- flutter - 我想在颤动中使用美元符号,我该怎么做?