reactjs - 无法使用 Firebase 数据库侦听器 setState()
问题描述
我正在尝试构建一个带有房间的迷你游戏。当我尝试从我的 firebase 实时数据库中检索房间信息时,我使用 database.ref().on() 函数来监听任何数据更改并根据更改设置我的状态。代码如下所示:
export default class Room extends Component {
state = {
room: null,
username: "sdff",
};
componentWillMount() {
const roomId = this.props.location.pathname;
app()
.database()
.ref(`/rooms${roomId}`)
.on("value", (snapshot) => {
const data = snapshot.val();
console.log(data);
this.setState({ room: data });
this.setState({ room: "hello" });
});
}
当我执行 console.log(data) 时,我确实看到数据包含我想要的所有信息。但是,this.setState 不起作用,这会导致页面无法呈现,因为在 render() 中使用了来自 state 的大量信息。即使我将房间设置为“hello”,如代码片段的最后一条语句所示,它仍然无法设置状态。我想知道是否是因为在成功检索数据之前调用了 render() ?如果是这样,我该如何解决这个问题?提前致谢。
解决方案
推荐阅读
- javascript - 如何在html href标签中插入链接
- python - 如何跳过代码块并转到 selenium 中所需的代码
- python - Python Queue Peek 中的错误
- python - 基于公共密钥合并/加入 csv 文件和 txt 文件的有效方法是什么?
- docker - 如何在 Web 应用程序中使用\连接到 sonatype nexus docker registry v2 api?
- swift - 您如何设置多个查询来限制发送到设备的用户数量,而不是为所有用户运行快照?
- c# - 脚本将对象移动到错误的位置
- azure - Azure 搜索:如何使字段全局唯一
- c++ - 使用 operator= 和 initializer_list 未找到继承
- python - 通过python将数据插入Postgres时出错