Frontend/Vue

[Vue3] Typescript / router.push 방법

미도반 2023. 2. 20. 14:24

 

리스트에서 row 선택 시 상세화면으로 넘어가는 기능입니다.

이때 router.push 를 사용합니다.

 

■ 데이터 넘기기

projectList.vue > template

1. 리스트에서 row-click 시 특정 함수를 호출합니다.

 

 

projectList.vue > script

 

● router 선언

 

 

 프로젝트 상세정보(projectForm.vue)으로 이동하기 위한 함수 선언


1. router.push 할 때, 이동할 router의 name으로 설정(router.ts에 설정한 name 값)하고,

2. 넘길 데이터는 별도의 query(or params)로 명명하고 json 형식으로 넘겨야 합니다.
Ex.  router.push(name:'project-form', param:{key:value, key:value})

3. 리스트의 row 정보를 가져올 때 interface를 선언하여 type을 지정해 주고 아래와 같이 지정해 주면 됩니다.
Ex. row: 인터페이스명

※ 함수의 1번 인자는 event 고정, 두번째 인자가 row 값입니다. event를 사용하지 않을 경우 event -> _event로 하면 됩니다.

 

 

routes.ts

1. params 으로 넘기는 파라미터를 지정해 줘야합니다. router.push할 때 사용한 파라미터명과 일치해줘야 합니다.
2. router를 통해 vue 간 데이터를 주고받기 위해서는 props : true 설정을 해줘야 합니다.

 

 

 

■ 데이터 받기

projectForm.vue > script

 

<script setup lang="ts"> 를 사용하면 defineProps를 import 하지 않아도 됩니다.

1. router 를 통해 props를 받아오기 위해 선언함.
- ProjectList.vue에서 router로 push한 key 값과 일치해야 합니다.

2. 상위 컴포넌트에서 보낸 props를 사용하기 위해서는 defineProps를 사용해야 합니다.

 

사용 시 props.변수명