React Firebase,在执行代码之前等待数据

时间:2021-07-25 20:42:55

标签: reactjs firebase react-native firebase-realtime-database

我在反应中收到此错误。在使用 .push 之前,如何确保我收到了数据?

未处理的拒绝(TypeError):无法读取 null 的属性“push”

 const joinTheLobby = () => {
    if(lobbyKey != ''){
        // Add Player to DB Lobby.
        const db = firebase.database().ref(`Lobby/${lobbyKey}/players`);
        let allPlayers = [];
        let pushPlayers = [];
        let newPlayer = {'userName': userName};

        db.on('value', async (snapshot) => {
            allPlayers = await snapshot.val();

            allPlayers.push(newPlayer);

            allPlayers.map(({userName}) => {
                pushPlayers.push(userName);
            });
        });

这就是我触发函数的方式。另外,这个函数会在状态更新后立即运行吗?

                <button onClick={joinTheLobby}>Join</button>

1 个答案:

答案 0 :(得分:0)

查看此代码,snapshot.val() 很可能返回 null

null 是根据文档返回的有效内容:https://firebase.google.com/docs/reference/node/firebase.database.DataSnapshot#val

因此,Firebase 中很可能不存在此 Lobby/${lobbyKey}/players