javascript - 是否可以在实际获取之前检查 onSnapshot() 是否发现更改?

标签 javascript reactjs firebase react-native google-cloud-firestore

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

相关文章:

javascript - 将不可变列表传递给需要数组的组件

javascript - 关于房间创建和删除的 Socket.io 事件

reactjs - 重构 withState 如何更新 Prop 变化

reactjs - react : TypeError: Cannot convert undefined or null to object

java - 如何使用 firebase 监听 android studio 中的变化

javascript - 下拉列表未从数据库填充

javascript - Protractor :预期 'pop up window to be visible' 语句不起作用

reactjs - 在 React 中嵌入 Pinterest 小部件

android - 日志事件 Firebase Analytics for Android

android - Firebase 远程配置 - 语言条件不工作 - android