vue 및 vuex 상태를 초기화할 시기
최근에 나는 사용자가 로그인할 "사용자"/"admin" 두 역할로 분리된 웹을 설계한다.
다른 역할은 같은 페이지에 로그인하지만 다른 버튼과 기능을 볼 수 있다.
MainPage.vue
컨테이너라서 사용자 정보를 얻기 위해 ajax를 "/init"라고 부른 다음 Vuex 스토어에 커밋한다.
그러면Content.vue
안에 있는 하위 페이지MainPage.vue
그것은 다른 버튼들을 보여줄 것이다.$store.state.user
메세지
하지만 나는 다른 api를 부르고 싶다.mounted
안쪽에 무대 장치하다Content.vue
사용자의 역할에 따라
그러나 이 단계에서 "/init"라고 불리는 아약스에 의해 채워지는 역할은 준비되지 않을 것이다.
전체적인 흐름은
// MainContent.부에를 하다
beforeCreate: async function () {
await axios.post('/init').then(response => {
if(response && response.data && response.data.data){
this.$store.commit("login", response.data.data)
}
})
}
// 내용.부에를 하다
mounted: async function() {
try {
console.log(this.$store, this.$store.state.user, this.$store.getters.isAdmin)
// no value here
}
Vue 구성 요소 수명 주기를 확인하고beforeCreate
부모님의 이름을 부르기 전에mounted
아동의
비동기식 기능이라도 라이프사이클 방법이 순서대로 호출될 것인가?
이 문제를 어떻게 해결해야 할까?
고마워요.
의 초기화를 지연시킬 수 있다.Content
구성 요소:user
Vuex에서 상태를 사용할 수 있게 된 이유는v-if
에게 지시하는Content
구성 요소초기화만 하면 된다.user
와 함께null
브룩스 주(Vuex 주)
<!-- MainPage.vue -->
<template>
<Content v-if="$store.state.user" />
</template>
지금this.$store.state.user
그리고 그것에 의존하는 모든 것은 다음으로부터 이용 가능해야 한다.Content
구성 요소의mounted
라이프사이클 훅
비동기 호출을 사용하여 사용자 데이터를 가져오므로 구성 요소 수명 주기는 신뢰할 수 있는 방법이 아니다.로드 상태 오버레이를 표시하고mapGetters
가게로 접근하기 위해서.이것은 사용자 데이터가 언제 이용 가능한지 알 수 있는 반응형 메커니즘을 제공할 것이다.다음은 단일 파일 구성 요소에 대한 일반적인 아이디어:
computed: {
...mapGetters({
getLoggedInUser: 'GET_LOGGED_IN_USER',
getIsUserAdmin: 'GET_IS_USER_ADMIN',
})
}
....
<template>
<content-overlay v-if="!getLoggedInUser">
Loading...
</content-overlay>
....
<button v-if="getIsUserAdmin">Admin Button</button>
<button v-if="!getIsUserAdmin">Regular User Button</button>
</template>
참조URL: https://stackoverflow.com/questions/48374270/when-to-initialize-vue-and-vuex-state
'programing' 카테고리의 다른 글
내 Redex 앱에서 상태를 올바르게 반환하려면 어떻게 해야 하는가? (0) | 2022.04.01 |
---|---|
파이톤 대본에 #!(쉐뱅)을 넣어야 하나, 어떤 형식을 취해야 하나? (0) | 2022.04.01 |
Nuxt 라우터에서 동적으로 구성 요소 선택 (0) | 2022.04.01 |
대응 라우터 URL 매개 변수가 작동하지 않음 (0) | 2022.04.01 |
Vuetify Data Iterator + Data 테이블의 페이지당 행 항목 이해, 기본 페이지를 설정할 수 있는가? (0) | 2022.04.01 |