IT이야기

전체 주를 대체하는 vuex 돌연변이

cyworld 2022. 5. 18. 21:59
반응형

전체 주를 대체하는 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

반응형