programing

메시지의 메시지에 대해 Vuex 저장소를 업데이트하는 방법세트

padding 2023. 6. 12. 21:11
반응형

메시지의 메시지에 대해 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
        }
    }

state.messages의 데이터 구조

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

}

그래서 제가 알아내려고 하는 것은 올바른 messageSet에 대한 상태를 업데이트하는 방법입니다(이것이 제가 메시지 배열이라고 부르는 것입니다).올바른 메시지 세트에 대해서만 메시지 세트의 배열에 새 메시지를 푸시하려고 합니다.찾기 방법을 사용해 보았지만 실패했습니다.채널/룸을 변경할 때 메시지를 표시하도록 지정한 결과입니다.

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

어떻게 하면 제가 원하는 것을 할 수 있을까요?나는 찾기 방법의 일부 버전을 가정하지만 정확한 방법은 모릅니다.

나는 그것을 알아냈고, 나는 디스플레이 메시지 업데이트를 제거하기 위해 내 소켓 온 메시지를 바꿨고, 대신 지금은 Vuex 동작과 돌연변이를 사용합니다.저는 Find 부분과 가까웠고 단지 변경이 필요해서 상태로 밀려났습니다.나는 그것이 검색 방법을 사용하여 그것을 국가로 직접 밀어내는 것을 보고 놀랐습니다.

결과는 이 선이 돌연변이에 필요하다는 것이었습니다.

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

언급URL : https://stackoverflow.com/questions/67595027/how-to-update-my-vuex-store-for-a-message-in-a-messageset

반응형