VueX가 어레이 데이터를 상태 그대로 교체합니다.
어떻게 설명해야 할지 모르겠으니 한번 해보자.저는 VueX의 가능성을 배우고 있을 뿐이니 조금만 참아주세요.
라는 이름의 상태 객체 배열이 있습니다.currentRoom
한 번에 하나의 물체만 담을 수 있습니다.따라서 이름에서 사용자가 방 안에 있는 것을 의미하며, 그 후 방을 변경하므로 current Room은 데이터를 새 방으로 변경해야 합니다.지금은 점점 더 커지고 있는 오브젝트만 더해져요.
목표를 달성하려면 무엇을 변경해야 합니까?
export const actions = {
[types.CURRENT_ROOM]({state, commit}, room) {
commit(types.CURRENT_ROOM, {room});
},
}
export const mutations = {
[types.CURRENT_ROOM](state, {room}) {
state.currentRoom.push(room)
},
}
export const types = {
CURRENT_ROOM: 'current_room'
}
VUE 파일 내에서 사용하고 있는 코드
this.$store.dispatch(RoomTypes.CURRENT_ROOM, room);
내 머릿속에서는 디스패치 대신 REPLACE 같은 것이 있어야 할 것 같기도 하고, 잘못 생각하고 있는 것일 수도 있습니다.그러니 나를 Stack Overflow에서 훌륭한 사람들 교육시키고 교육시켜줘!
측면 메모: Vue 3 및 VueX 4
전화를 걸기 때문에 어레이가 커집니다.Array.prototype.push()
항목을 배열에 추가합니다.단일 요소 어레이를 가정할 경우 각 괄호를 사용하여 어레이 요소를 교체할 수 있습니다.0
어레이 인덱스의 경우:
// store.js
export const mutations = {
[types.CURRENT_ROOM](state, {room}) {
state.currentRoom[0] = room
},
}
다만, 어레이는 복수의 값을 보관 유지하는 것을 목적으로 하고 있습니다.값이 1개뿐이라면 어레이는 필요 없습니다.
state.currentRoom
에서 변경되어야 한다Array
에 대해서Object
:
// store.js
export const state = () => ({
currentRoom: {} // or null
})
그리고 이 변환은 새로운 값을 할당해야 합니다.state.currentRoom
:
// store.js
export const mutations = {
[types.CURRENT_ROOM](state, {room}) {
state.currentRoom = room
},
}
언급URL : https://stackoverflow.com/questions/69413140/vuex-replace-array-data-in-state
'IT이야기' 카테고리의 다른 글
Sinon은 Vue 이벤트에 의해 트리거된 Vue 컴포넌트 메서드를 어떻게 감시합니까? (0) | 2022.07.19 |
---|---|
새 줄에 의한 Java 문자열 분할 (0) | 2022.07.19 |
Eclipse의 열린 리소스 대화 상자에서 .class 파일을 숨기려면 어떻게 해야 합니까? (0) | 2022.07.19 |
구축과컴파일(Java) (0) | 2022.07.19 |
404 응답에서 엑시스로 오류 메시지를 캐치하거나 javascript로 가져옵니다. (0) | 2022.07.19 |