月關寶盒
2022-08-18 10:46:27
我正在嘗試使用 react js 中的 where 子句從 firestore 中過濾文檔。但是,當我在where子句中使用狀態變量時,它不起作用,但是當我提供實際字符串時,它開始工作不工作firebase.firestore().collection('Partners') .where("Email",'==',this.state.currentUser).get().then( querySnapshot => { querySnapshot.forEach(doc => { this.setState({ Theatre:doc.data().Theatre }) })})加工firebase.firestore().collection('Partners') .where("Email",'==',"[email protected]").get().then( querySnapshot => { querySnapshot.forEach(doc => { this.setState({ Theatre:doc.data().Theatre }) })})任何幫助將不勝感激。謝謝。編輯我甚至試過了,它正在成真。然而,where 子句不適用于狀態變量console.log(this.state.currentUser==='[email protected]')
2 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
可能是狀態變量有問題,如異步效應或任何其他可能的原因。setState
確保狀態變量具有值。為了保證安全,請在以下條件下運行此函數:currentUserif
if(this.state.currentUser){
firebase.firestore().collection('Partners')
.where("Email",'==',this.state.currentUser).get().then( querySnapshot => {
querySnapshot.forEach(doc => {
this.setState({
Theatre:doc.data().Theatre
})
})
})
}
對于調試,請嘗試通過控制臺記錄它。

RISEBY
TA貢獻1856條經驗 獲得超5個贊
React 狀態是異步的,您確實會在控制臺中獲取狀態值,但是當運行 firestore 查詢時,因為它也是異步的,因此您的狀態以某種方式被覆蓋,或者您的頁面正在刷新并再次設置狀態。
我遇到了同樣的問題,然后我檢查了我的頁面是否被刷新,并且即使我在控制臺中獲得了它,我也丟失了我設置的狀態.log(),但是當我的消防商店運行查詢時,那里沒有狀態。
您需要在此處提供完整的代碼,以便我們查看它。
添加回答
舉報
0/150
提交
取消