상점 값을 가져온 후 Vue 리디렉션 (Vue redirect after getting store's values)


문제 설명

상점 값을 가져온 후 Vue 리디렉션 (Vue redirect after getting store's values)

입력 값이 vuex 저장소에서 오는 편집 페이지 /edit/:id를 만들려고 했지만 저장소에 params의 동일한 ID를 가진 작업이 없으면 /404로 리디렉션하고 싶은데 어떻게 해야 하나요? created()를 시도했지만 작동하지 않았습니다. Vue3를 사용 중입니다.

<script>
export default {
  name: "EditTaskForm",
  data() {
    return {
      newTaskDesc: "",
    };
  },
  created() {
    const task = this.$store.getters.getTaskById(Number(this.$route.params.id));
    if (!task) this.$router.push("/404");
  },
  mounted() {
    const task = this.$store.getters.getTaskById(Number(this.$route.params.id));
    this.newTaskDesc = task.desc;
  },
  methods: {
    submitEdit() {
      this.$store.dispatch("editTask", {
        newTaskDesc: this.newTaskDesc,
        id: Number(this.$route.params.id),
      });
      this.$router.push("/");
    },
  },
};
</script>

참조 솔루션

방법 1:

Try follwoing:

beforeRouteEnter(to, from, next) {
  const task = this.$store.getters.getTaskById(Number(this.$route.params.id));
  if (!task) this.$router.push("/404");
},
<script>
export default {
  name: "EditTaskForm",
  data() { ... },
  mounted() { ... },
  methods: { ... },
  beforeRouteEnter(to, from, next) {
    const task = this.$store.getters.getTaskById(Number(this.$route.params.id));
    if (!task) this.$router.push("/404");
  }
};
</script>

Navigation Guards

(by Martin PilaszekLars)

참조 문서

  1. Vue redirect after getting store's values (CC BY‑SA 2.5/3.0/4.0)

#vue-router #vuejs3 #vuex #vue.js






관련 질문

결과를 필터링하기 위해 경로 매개변수가 변경되는 Vue-router 공유 구성 요소 (Vue-router shared component with route params changes to filter results)

속성이 변경되었지만 구성 요소가 다시 렌더링되지 않습니다. (component won't render again although properties have changed)

VueJS에서 라우터를 사용하는 동안 "유형 오류: 정의되지 않은 'push' 속성을 읽을 수 없습니다" ("Type Error: Cannot read property 'push' of undefined" while trying to use router in VueJS)

여러 경로에 대해 동일한 페이지 사용 (Use same page for multiple routes)

Vue 기본 라우터가 사용되지 않는 오류를 표시합니다. (Vue Native Router gives error not being used)

vue 라우터 BeforeRouteEnter 메서드를 사용하여 http 요청이 완료될 때까지 대기 (Using vue router BeforeRouteEnter method to wait for http request to complete)

vue-router를 사용하여 이 Vue.js 프로젝트에 부트스트랩을 설치하려면 어떻게 해야 합니까? (How can I install Bootstrap into this Vue.js project using vue-router?)

VueRouter - URL에 후행 슬래시가 추가되지 않으면 localStorage가 지워집니다. (VueRouter - localStorage gets cleared when no trailing slash is added in URL)

NavigationDuplicated 없이 vue-router를 사용하여 필터링하는 방법 (How can i filter using vue-router without NavigationDuplicated)

beforeEach를 사용하는 Vue Global Route Guard가 트리거되지 않음 (Vue Global Route Guard using beforeEach does not trigger)

Vue3 route.query 비어 있음 (Vue3 route.query empty)

vue 라우터는 쿼리 매개변수를 가져올 수 없습니다. (vue router can't get query params)







코멘트