簡體   English   中英

使用 Firestore 的 useEffect

[英]useEffect with firestore

我正在嘗試執行以下操作,我無法收到任何錯誤,但奇怪的是,第一個條件setRivalGuess setRivalGuess(doc.data().guess2)不起作用,第二個setRivalGuess(doc.data().guess1)效果很好。 我檢查了數據庫,一切都保存得很好,也就是說,我想獲取的每個數據都在數據庫中可用。 我不知道這是否與我使用useEffect的方式有關。

const { rivalGuess, setRivalGuess } = useGame(); 
const game = query(roomColRef, where("roomId", "==",  roomId))
useEffect(() => {
    const getUsers = async () => {
        const data = await getDocs(game);
        data.forEach((doc)=> {
            if (doc.data().numberOfPlayers == 2 ){
                if(userValue == doc.data().players[0].username)
                    if (doc.data().guess2 =! 0){
                        setRivalGuess(doc.data().guess2)}
                if (userValue == doc.data().players[1].username) 
                    if (doc.data().guess1 =! 0){ 
                        setRivalGuess(doc.data().guess1)} }})};
    getUsers();
  }, [ rivalGuess, setRivalGuess ])

這很有效......

const UseRivals = (collectionStr) =>{
        const [ rivalGuess,  setRivalGuess ] =useState([])
        const { roomId, userValue } = useGame()
        useEffect(() => {
            const collectionRef = collection(db, collectionStr);
            const q = query(collectionRef, where("roomId", "==", roomId ))
            const unSub = onSnapshot(q , (snapshot) => {
                snapshot.docs.forEach(doc => {
                if (doc.data().numberOfPlayers==2) {
                    if (userValue == doc.data().players[0].username) if (doc.data().guess2 =! 0) 
                     { setRivalGuess(doc.data().guess2) }
                    if  (userValue == doc.data().players[1].username) if  (doc.data().guess1 =! 0)
                        { setRivalGuess(doc.data().guess1)}}})
            }, (err) => {
                console.log(err.message);
            });
            return () => unSub();
        }, [collectionStr]);
    
        return { rivalGuess };
    }
    export default UseRivals;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM