inflearn logo
강의

講義

知識共有

Vue3パーフェクトマスター:基礎から本番まで - 「本編」

Vue3 에서 router-link 에 이벤트 추가 방법

1191

zungssam9813

投稿した質問数 12

0

안녕하세요.

이 강의 수강 후 프로젝트를 하나 진행하고 있습니다.

다름이 아니라 제목처럼 router-link 클릭시에 이벤트를 추가하고 싶습니다.

구체적인 상황은 GNB가 펼쳐진 상태에서 메뉴 클릭해서 라우터 이동하면 펼쳐졌던 메뉴가 닫혀야 하는데 라우터 이동만 하고 메뉴가 그대로 열려있는 상화입니다.

기존의 Vue2 에서는 @click.native="함수실행" 이런 식으로 라우터 이동전에 실행할 이벤트를 추가할 수 있었는데요...

Vue3 에서는 .native 가 deprecated 되서 사용이 불가하네요.

내비게이션 가드에서 처리해도 될 것 같기는 한데 뭔가 제대로된 해결책이 아닌것 같아서요.

이런 경우가 아니더라도 다른 필요한 상황이 더 있을 수 있을것 같아서 알아둬야 할것 같은데...

혹시 router-link 태그에 이벤트를 추가할 수 있는 다른 방법이 있을까요?

공식문서를 읽어봐도 이해가 안되서 여기에 질문드립니다.

vuejs

回答 1

0

gymcoding

안녕하세요 :)

router-link 에 이벤트를 바인딩 하기 위해서는 <router-link @click="핸들러" />를 사용할 수 있습니다.


Vue2에서 .native를 이용하여 자식 컴포넌트의 루트 요소에 이벤트를 추가할 수 있었습니다.
Vue3에서는 .native가 deprecated 되었습니다.

대신 Vue3에서는 새롭게 등장한 emits 옵션을 활용하여 자식 루트 요소의 바인딩 여부를 결정할 수 있습니다.

  • 만약 emits 옵션에 지정할 경우 > 자식 루트 요소의 바인딩에 제외가 되며

  • 만약 emits 옵션에 지정하지 않은 경우 > 자식 루트요소에 바인딩이 됩니다.
    (기존 .native 대체, 이러한 속성은 Non-Prop 또는 fallthrough 속성 이라고 함)

추가적으로

  • Non-Props 속성의 루트 요소의 바인딩을 막으려면 inheritAttrs 옵션을 사용할 수 있습니다.

  • 루트 요소 말고 다른 요소나 컴포넌트에 바인딩을 하려면 $attrs 속성을 사용할 수 있습니다.

이러한 내용은 Fallthrough 속성, inheritAttrs, $attrs에 관한 지식을 숙지하시면 이해하시는데 도움이 되실거에요.

그리고 이러한 내용은 기본편[컴포넌트 기초 & 심화 > Non-Prop 속성]에서 자세히 다루고 있습니다.

감사합니다.

 

 

 

0

zungssam9813

감사합니다. 해당 내용 다시 보겠습니다!

composable: alert 창이 안떠요

0

711

2

Nuxtjs3 강의 계획은 없으신가요?

0

528

1

axios 컴포저블 함수 구현 2에서

0

471

1

composable과 pinia store - 둘 중 하나를 선택하는 기준

1

1594

1

코드 수정 문의

0

440

1

강의교안 수정 요청드립니다.

0

591

1

Pinia 사용 시 composition api

0

1388

1

createPost()의 async, awiat

0

526

1

slot 사용 관련 문의

1

414

1

Filter 구현하기에서 input v-model 질문 있습니다.

0

549

2

라우터 해시 모드 추가 질문

0

541

1

네비게이션 가드 및 플러그인 관련 질문입니다.

0

368

1

트랜지션(transition) 관련 질문드립니다.

0

548

1

json-server에 대해 궁금한게 있습니다~

0

380

1

기본편에도 crud 하는게 있을까요?

0

400

1

jsconfig.js 에러

0

384

1

headers 값을 못찾아요~

0

379

1

vite vue3에서 ie safari babel

0

771

1

composables 전역등록

0

299

1

stores 다른 파일에서 state 가져오기

0

439

1

computed에서 인자 전달방법

0

572

1

components.d.ts 자동작성 안됨

0

717

1

cors 에러

0

571

1

제가 설정 잘못한걸까요?

0

4512

2