• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

router.push 질문

20.03.05 02:33 작성 조회수 533

1

<div @click="$router.push('/pages/profile').catch(() => {})"> </div>

라는 코드가  있는데요. 

그럼 어떤 것을 클릭 했을 때 /pages/profile로 넘어 가라고 했는데 여기서 catch(() => {})로 에러 핸들링을 하는데 catch 파라미터로 인자도 안들어가 있는데 이건 잘못된건가요??

아니면 저렇게 catch(() => {}); 이렇게만 적어 놔도 어떤 것을 클릭했을 때 /pages/profile 넘어가지 않으면 에러를 표시해주나요???

답변 1

답변을 작성해보세요.

0

안녕하세요 my-way님, 뷰 템플릿 표현식에 간단한 자바스크립트 표현식을 쓰는 것은 허용이 됩니다. 그 이유는 "hello world"를 "camelize('hello world')"를 한다든지  "str.split('').reverse().join('')" 등의 간단한 연산을 지원해서 개발자들이 화면에 더 다양한 방식으로 데이터를 표현할 수 있게 라이브러리가 제공되고 있기 때문입니다 :)

결론적으로, 위와 같이 특정 로직에 대한 분기 처리는 메서드에서 아래와 같이 처리하는 게 좋습니다.

<div @click="routeSomePage">
methods: {
  routeSomePage() {
    $router.push('/pages/profile').catch(() => {})
  }
}

그리고 라우터의 push() API의 호출 결과가 프로미스가 아니라 `catch()`는 동작하지 않을겁니다. 아래 문서 한번 확인해보세요 :)

https://router.vuejs.org/guide/essentials/navigation.html#router-push-location-oncomplete-onabort