【发布时间】:2023-04-08 11:49:02
【问题描述】:
我有一个非常简单的聊天应用程序。提交后,它会使用用户名和消息更新数据库。
this.ref.child("/chat").update({username: this.state.username,
message: this.state.chatMessage});
然后我使用 ref.on('value',()) 来获取新的聊天并将其存储在一个数组中。
this.chat.on('value',(snapshot) => {
console.log('triggered')
let newMessage = {username:snapshot.val().username, message: snapshot.val().message}
this.setState({chatArray: [...this.state.chatArray,newMessage]})
})
我试图想出一种解决方法来获取重复的消息(即再次输入相同的消息,因为如果没有任何更改,则不会触发侦听器)所以我想将一个日期对象添加到数据库中。当我使用
将日期添加到数据库时let d = new Date();
this.ref.child("/chat").update({username: this.state.username,
message: this.state.chatMessage, time: d});
当我写东西并提交它时,事件监听器开始被触发两次。提交聊天的用户会收到两次相同的消息,而另一个用户只会收到一次。删除日期解决了问题。
有人知道为什么会这样吗?
【问题讨论】:
标签: javascript reactjs firebase firebase-realtime-database