Vue.js - Vuex Store의 변환 내부에서 라우터 제어
다음과 같은 문제가 있습니다.
이것은 나의 돌연변이 중 하나입니다.
tryAutoLogin(state) {
console.log("Trying auto login...");
const token = window.localStorage.getItem("token");
if (!token) {
return;
}
const expirationDate = window.localStorage.getItem("token_exp");
const now = new Date();
if (now >= expirationDate) {
return;
}
state.userData.loggedIn = true;
state.userData.username = token.identity;
// desired: this.$router.push("/dashboard") => results in undefined
}
현재 저는 구성 요소의 생성 단계에서 구성 요소 내부에서 이 변환을 수행합니다.
created() {
this.$store.commit("tryAutoLogin");
this.$router.push("/dashboard");
}
값을 출력하고 변수에 저장한 후 이를 사용해야 하기 때문에 이 방법은 적합하지 않습니다.this.$router.push("/dashboard")
.
어떻게 하면 우아하게 해결할 수 있을까요?돌연변이의 내부에 유리한 것처럼.// desired
댓글.Vuex 스토어 안에 있는 라우터에 액세스할 수 있는 방법이 있습니까?
다음과 같이 vue 구성 요소 인스턴스를 변환에 전달합니다.
this.$store.commit("tryAutoLogin",this);
변환에서 매개 변수로 추가vm
그러면 그것을 로 사용합니다.vm.$router.push("/dashboard")
:
tryAutoLogin(state,vm) {
console.log("Trying auto login...");
const token = window.localStorage.getItem("token");
if (!token) {
return;
}
const expirationDate = window.localStorage.getItem("token_exp");
const now = new Date();
if (now >= expirationDate) {
return;
}
state.userData.loggedIn = true;
state.userData.username = token.identity;
vm.$router.push("/dashboard")
}
언급URL : https://stackoverflow.com/questions/63538091/vue-js-control-the-router-from-inside-a-mutation-in-vuex-store
'programing' 카테고리의 다른 글
변수가 범위 내에 있는지 확인하는 중입니까? (0) | 2023.06.23 |
---|---|
디버깅 정보를 찾을 수 없거나 Visual Studio의 디버깅 정보와 일치하지 않습니다. (0) | 2023.06.23 |
가시성:숨김과 디스플레이:없음의 차이점은 무엇입니까? (0) | 2023.06.23 |
사용자 지정 메시지를 사용한 Jackson 예외 포착 및 처리 (0) | 2023.06.23 |
홈브루에서 python@2를 다시 설치하는 방법은 무엇입니까? (0) | 2023.06.23 |