Vuex, next, localStorage, 상태 덮어쓰기
vue/vuex의 상태 관리에 대해 질문이 있습니다.
- 지속성을 위해 'next-vuex-local storage'를 사용합니다.
- 저는 제 가게를 'ui', 'user'와 같은 모듈로 나누었습니다.
문제는 하나의 행동으로 내가 두 개의 상점 행동을 보낼 때 다음과 같은 것입니다.
const res = await API_CALL('someEndpoint')
this.$store.dispatch('ui/setSignInVisible', false)
this.$store.dispatch('customer/setToken', res.token)
처음에는 setSignInVisible을 false로 설정하지만 다음 액션에서는 true로 설정하기 때문에 오류가 발생합니다.localStorage 작업이 비동기식이기 때문에 이 문제가 발생한 것으로 추정됩니다.
이 문제를 해결합니다.
const res = await API_CALL('someEndpoint')
await this.$store.dispatch('ui/setSignInVisible', false)
this.$store.dispatch('customer/setToken', res.token)
하지만 제 질문은, 이것이 이런 식으로 작동하는지 아니면 국가를 관리하는 더 나은 접근법이 있는지입니다.우선 상태에 대해 걱정하지 않을 접근법.
그래서 아래 줄에서, 당신은 원자값을 가지고 있습니다.false
다음의 값을 설정하는 데 사용될 것으로 추정되는 조치 또는 파견 방법으로 전달됨this.$store.state.ui.signInVisible
로.false
.
await this.$store.dispatch('ui/setSignInVisible', false)
vuex의 돌연변이는 비동기식일 수 없습니다. 동작은 비동기식입니다.그들은 본질적으로 비동기적이지 않습니다.따라서 일관성을 위해 일부 개발자들은 일부는 본질적으로 동기화되어 있음에도 불구하고 작업을 통해 모든 속성을 설정하는 것을 좋아합니다.그럼 전화해보세요.
this.$store.commit('ui/setSignInInivisible', false)
상태에서 디렉토리를 설정할 수도 있습니다.this.$store.state.ui.signInVisible = false
또는 사용해 볼 수 있습니다.vuex
기능.mapMutations
구성 요소의 메소드 섹션에 이러한 메소드를 넣고 직접 호출합니다.또한 어디에서나 액세스할 수 있기 때문에 localStorage를 vuex에 넣는 이유를 잘 모르겠습니다.
언급URL : https://stackoverflow.com/questions/63147773/vuex-nuxt-localstoarage-state-overwrite
'programing' 카테고리의 다른 글
URL에서 마지막 슬래시 이후의 모든 항목을 가져오는 방법은 무엇입니까? (0) | 2023.06.14 |
---|---|
'List' 유형은 'List' 유형의 하위 유형이 아닙니다. (0) | 2023.06.14 |
APP_INITIALIZER에서 복구할 수 없는 예외를 처리하고 사용자에게 알리는 방법은 무엇입니까? (0) | 2023.06.14 |
워드프레스에서 wp_generate_password 기능을 비활성화하려면 어떻게 해야 합니까? (0) | 2023.06.14 |
Ruby 클래스 유형 및 사례 문 (0) | 2023.06.14 |