如何为messageSet中的消息更新我的Vuex商店



我正在尝试使用vue-socket.io创建一个聊天应用程序。到目前为止,我已经学会了如何设置插座来创建房间等,但现在我正试图在聊天之间显示消息,并更新Vuex商店,以便在不同频道之间来回切换时显示消息。

我在弄清楚如何用消息更新我的Vuex状态时遇到了问题。套接字服务器向房间发送基于消息中包括的v_code的消息。

这是我的信息代码插座

message(message) {
if(this.conversation.v_code == message.v_code) { // This checks to make sure just the active view is sent the message
let userID = this.$store.getters.userID
userID = userID.cognitoUsername
if(message.userID === userID) message.fromMe = true
this.displayMessages.push(message) // This is where the active view messages are seen/rendered from
}
}

状态消息的数据结构

{
{
{
v_code: <token>,
messages: [] <-- array of messages for this v_code
}
}
}

因此,我想弄清楚的是如何更新正确消息集的状态(这就是我一直在调用的消息数组(。我只想将新消息推送到messageSet中的数组,但只针对正确的messageSet。我尝试过使用查找方法,但没有成功。这是我在更改频道/房间时分配给displayMessages的发现。

this.messages.find((messageSet) => messageSet.v_code === message.v_code)

我怎样才能做我想做的事?我假设是find方法的某个版本,但不确定确切的方法。

我已经解决了这个问题,我更改了消息上的套接字以删除显示消息更新,现在使用Vuex操作和突变。我很接近查找部分,只需要更改它,它就推到了州。我很惊讶地看到它使用find方法将它直接推到状态。

结果是突变中需要这条线

state.messages.find((messageSet) => messageSet.v_code === message.v_code).messages.push(message)

最新更新