전체 주를 대체하는 vuex 돌연변이
나는 Vuex와 함께 일하고 있고 나는 그것에 꽤 익숙하지 않다.나는 데이터를 저장소에 위임하고 상태를 페이로드의 내용으로 바꾸고 싶다.
내 상점은 모듈을 사용하여 만들어졌고, 문제의 모듈은 사용자 모듈이다.
현재 난 내 돌연변이 같은 걸 하고 있어
setUser(state, payload) {
state.user = {...payload.user}
}
이렇게 하면 내 상태는 실행 후 커밋을 통해
user: {
user: {
nickname: 'Bob',
host: true,
emoji: 'Smile',
passcode: 12345678,
room_id: 123
}
}
이상적으로는 사용자 객체에 사용자 객체를 포함하지 않고, 사용자의 각 속성이 다음과 같은 상태를 이루기를 원한다.
state : {
nickname: 'Bob',
host: true,
emoji: 'Smile',
passcode: 12345678,
room_id: 123
}
아니면 이렇게 보일 수도 있고
state : {
user: {
nickname: 'Bob',
host: true,
emoji: 'Smile',
passcode: 12345678,
room_id: 123
}
}
내가 왜 이런 생각을 하는지 모르겠어.state.user.user
?
여기 내 주의 사용자 모듈이 있다.
export default {
state: {
user: {}
},
mutations: {
setUser(state, payload) {
state.user = {...payload.user}
}
},
actions: {
},
getters: {
}
};
나 또한 위와 같이 노력했다.state:{}
이는 다음 돌연변이 계층에서 간접적으로 다른 사용자 개체를 생성하기 때문이다.
setUser(state, payload) {
state.user = {...payload.user }
}
돌연변이 계층에서 상태는 이미 전체 사용자 상태를 나타내고 있다.따라서 여기서 사용자 개체를 직접 할당할 수 있다.
setUser(state, payload) {
state = {...payload.user }
}
일반적으로 상태 개체는 다음과 같이 초기화해야 한다.
state : {
nickname: '',
host: false,
emoji: '',
passcode: null,
room_id: null
}
나는 @isebarn의 의견에 동의한다. 만약 당신이 당신의 적재물과 함께 오는 것을 제공한다면 이것은 꽤 쉽게 해결될 것이다.
{ "quiz_history": [], "user": { "id": 1, "nickname": "Bob", "login_code": "76752576", "host": 1, "room_id": 1, "emoji": "Smiley", "created_at": "2019-10-11 11:09:12", "updated_at": "2019-10-11 11:09:12" } }
그렇게 해서 그 방법으로 넘어가면 효과가 있을 것이다.하지만 다른 것을 통과하면 세 개의 점 분산 구문이 잘못될 수도 있을 것 같아.
참조URL: https://stackoverflow.com/questions/58339742/vuex-mutations-replacing-the-whole-state
'IT이야기' 카테고리의 다른 글
코르도바/자바스크립트 오디오 녹음 (0) | 2022.05.18 |
---|---|
사용되지 않는 행을 주석 처리한 후 스위치케이스가 컴파일되지 않음 (0) | 2022.05.18 |
Vuex 스토어에서 Firestore 스냅샷 수신기를 제거하는 방법 (0) | 2022.05.18 |
C의 구조 메모리 레이아웃 (0) | 2022.05.18 |
유니언 및 유형 퍼닝 (0) | 2022.05.18 |