vuex 스토어 토큰이 구성 요소 간에 업데이트되지 않음
다음 store/index.js 파일이 있습니다.
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
token: null
}
const mutations = {
setToken (state, token) {
state.token = token
localStorage.setItem('token', token)
},
removeToken (state) {
state.token = null
localStorage.removeItem('token')
}
}
const getters = {
isLoggedIn: state => {
return state.token != null
}
}
export default new Vuex.Store({
state,
getters,
mutations
})
그리고 나의 메인.js에서는 다음과 같이 추가합니다.
import store from './store'
new Vue({
el: '#app',
router,
store,
render: h => h(App)
})
로그인할 때 토큰을 다음과 같이 설정합니다.
this.$store.commit('setToken', response.data.token)
setToken 함수가 localStorage에 성공적으로 저장했기 때문에 작동해야 합니다.
그러나 다른 구성 요소로 이동하여 다음을 호출하는 경우:
data () {
return {
loggedIn: false
}
},
mounted: function () {
this.loggedIn = this.$store.getters.isLoggedIn
console.log(this.loggedIn)
}
그러면 콘솔에 'false'가 인쇄됩니다.또한 '마운트'를 '컴퓨팅', '크리에이티드', 'ready'로 변경하려고 시도했지만 결과는 동일합니다.
이렇게 해야만 문제를 해결할 수 있을 것 같습니다.
mounted: function () {
this.token = localStorage.getItem('token')
this.$store.commit('setToken', this.token)
},
computed: {
isLoggedIn () {
return this.$store.getters.isLoggedIn
}
}
의 로그 대상입니다.인은 마침내 진실이 될 것입니다.
하지만 내가 그렇게 한다면 vuex의 의미는 무엇입니까?
계산/마운트/등을 호출해야 할지 모르는 것이 잘못되었거나, 돌연변이를 수행하는 방식이 잘못되었거나, 올바른 파일에서 Vuex를 초기화하지 않은 것 같습니다.하지만 지금은 다 해본 것 같아요.
로그인하고 토큰을 설정하기 전에 구성 요소가 마운트되었을 수 있습니다.
토큰 지속성을 위해 로컬 스토리지를 사용하는 것을 보면, 나는 그런 식으로 값을 초기화할 것입니다.
const state = {
token: localStorage.getItem('token')
}
이것이 될 것입니다.null
설정되지 않았거나 제거된 경우.
언급URL : https://stackoverflow.com/questions/47984903/vuex-store-token-doesnt-update-accross-components
'programing' 카테고리의 다른 글
아이폰 시뮬레이터에서 카메라를 테스트하려면 어떻게 해야 합니까? (0) | 2023.06.09 |
---|---|
좋은 속도 제한 알고리즘은 무엇입니까? (0) | 2023.06.09 |
오류: 참조 또는 변수에 할당할 수 없습니다!앵귤러 4 (0) | 2023.06.09 |
동적으로 작성된 단추에 코드 할당 (0) | 2023.06.09 |
NLog 메시지를 Visual Studio의 출력 창으로 출력하려면 어떻게 해야 합니까? (0) | 2023.06.09 |