我在反应中收到此错误。在使用 .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>
答案 0 :(得分:0)
查看此代码,snapshot.val()
很可能返回 null
。
null
是根据文档返回的有效内容:https://firebase.google.com/docs/reference/node/firebase.database.DataSnapshot#val
因此,Firebase 中很可能不存在此 Lobby/${lobbyKey}/players
。