URL을 변경하지 않고 vue 라우터 경로 변경
프런트 엔드에서는 초기화가 잘못되었을 경우에 대비하여 사용자를 에러 뷰로 리다이렉트 합니다.이를 위해 특정 경로를 통해 호출할 수 있는 특별한 오류 보기를 준비했습니다.UX를 개선하기 위해 url을 다음과 같은 것으로 바꾸고 싶지 않습니다./error
그래도 vue 라우터를 이용하고 싶습니다.
당신은 이것을 어떻게 달성하는지 알고 있나요?
현재 URL을 변경하지 않고 라우터 뷰에서 사용되는 현재 컴포넌트 변경에 대해 github에서 설명합니다.
그러나 기대 함수는replaceView
아직 사용할 수 없습니다.
고객님의 요구와 완전히 동일한 요건을 가지고 있으며 해결 방법을 찾습니다.
이 루트 컴포넌트에는App.vue
(Quasar Framework를 사용합니다).템플릿은 다음과 같습니다.
<template>
<div id="q-app">
<div v-if="$store.state.g.errorState">
<the-error-page>Error Message</the-error-page>
</div>
<router-view v-else />
</div>
</template>
vuex 글로벌 스토어를 사용하고 있습니다.state.g.errorState
에러 스테이트에 플래그를 붙입니다.이 값이 참일 경우 오류 페이지를 표시하고 그렇지 않을 경우 일반 라우터 뷰를 표시합니다.
페이지에 오류가 있는 경우 올바른 값을 지정하기만 하면 됩니다.state.g.errorState
:
<script>
export default {
data() {
// ...
},
beforeMount() {
if (somethingWrong) {
this.$store.commit('g/errorState', true)
}
}
}
</script>
분명히,state.g.errorState
루트가 변경될 때마다 값을 false로 복원해야 합니다.
const Router = new VueRouter({
// ...
})
Router.beforeEach((to, from, next) => {
store.commit('g/errorState', false)
next()
})
사용할 수 있습니다.history.replaceState
. pushState 및 replaceState는 Vue Router가 내부적으로 URL을 조작하기 위해 사용하는 것입니다.브라우저 콘솔에 이 행을 입력하면 주소 표시줄에 어떤 일이 발생하는지 관찰해 주십시오.
history.replaceState({urlPath:'/some/page/on/stackoverflow'},"",'/some/page/on/stackoverflow')
악시오스 인터셉터 안에서 일하는 동안, 이것은 나에게 효과가 있었다(아직도 해킹)
if (error.response.status === 404) {
router.replace({ name: '404' });
history.replaceState({}, "Not Found", error.response.request.responseURL)
}
솔루션:
router/index.displaces:
{
name: "error",
path: "*",
component: () => import("src/pages/error/404.vue"),
},
구성 요소:
this.$router.replace({
name: "error",
params: { 0: `/${this.$route.path}` },
replace: true,
});
return;
언급URL : https://stackoverflow.com/questions/52966463/change-vue-router-route-without-changing-the-url
'programing' 카테고리의 다른 글
vue js 1.x 대신 Vue js 2.x 지시문을 사용하여 투고를 제목별로 필터링하는 방법 (0) | 2022.09.01 |
---|---|
소정수 배열 클리어: memset vs. for loop (0) | 2022.09.01 |
에러노를 설정할까요? (0) | 2022.09.01 |
C/C++에서 바이트의 비트 순서를 되돌리는 가장 간단한 방법은 무엇입니까? (0) | 2022.08.31 |
이클립스에서 항아리를 가져오는 방법은? (0) | 2022.08.31 |