지난 앞선 포스팅에서 1편에서는 기본 이론을 알고,
2편에선 컴포넌트를 각각 구성해보고, vue-router에 대한 이론을 알아보았습니다.
이제 vue-router를 사용해 컴포넌트간 이동을 진행해보도록 하겠습니다.
스텝2 컴포넌트에서 컴포넌트의 이동
우리가 정의한 앱 구조를 살펴보면 Login 컴포넌트에서 SignUp컴포넌트로 이동하고 두 컴포넌트에서 Hello 컴포넌트로 이동할 수 있습니다.
어떻게 해야할까요?
우리는 router-link라는 vue-router 구성 요소를 사용할 것입니다.
1 | <router-link>는 라우터를 사용하는 앱에서 사용자가 이동하기 위한 구성 요소입니다. 목표 위치는 to라는 prop으로 지정됩니다. |
이제 Login 및 SignUp 컴포넌에서 router-link를 사용하여 두 가지 컴포넌트끼리 이동 할 수 구현 하겠습니다.
이제 방금 만든 링크를 사용하여 두 컴포넌트 사이를 이동 할 수 있습니다.
마지막으로 Login/SignUp 컴포넌트에서 Hello컴포넌트로 이동시켜야합니다.
현재 구현된 코드가 없으므로, 인증확인 확인 없이 Connection 버튼을 클릭할 때 Hello 컴포넌로 간단히 리다이렉션 시킬 것입니다.
라우터 링크를 사용하면 구성 요소의 html부분에서 이동을 위한 값을 탐색이 이루어집니다.
그러나 우리는 계획에따라 경로를 이용하려 합니다.
이렇게 하기위해선 Connection 버튼을 클릭할때 vue.js의 v-on메소드를 통해 이벤트를 바인딩하여 처리 할 수 있습니다.
1 | 이벤트 바인딩 |
우리는 이벤트를 바인딩하고 클릭하여 실행합니다. 지금은 Connection 버튼을 클릭하여 이벤트가 발생해서 Hello 컴포넌트로 이동합니다.
각 컴포넌트 사이를 프로그래밍 방식으로 이동하려면 vue-router에는 앱에서 사용할 수 있는 메소드들이 있습니다.
이러한 메소드에 대한 자세한 내용은 vue-router의 설명서를 참조하세요.
https://router.vuejs.org/en/essentials/navigation.html
이 예제에서는 사용자가 로그인하면 Hello 컴포넌트를 시작 경로로 사용하기 때문에 replace 메소드를 사용하려고합니다.
로그인 컴포넌트를 변경하여 구현해 보겠습니다.
우리는 login 함수안에 *this.$router.replace(‘hello’) 가 있는 것을 볼 수 있습니다.
왜 우리는 router에 접근할때 this 를 함께 사용할까요? main.js 파일을 살펴보면, router객체가 Vue 앱에 삽입되어있는 것을 알 수 있습니다.
이러한 방법은 우리가 어플리케이션의 모든 컴포넌트를 쉽게 접근 할 수 있는 방법입니다.
또한 우리는 ‘hello’ 로 접근하지만 아직 hello에 대한 경로가 없습니다.
Hello 컴포넌트의 ‘/‘ 라는 기본 경로는 앱을 실행시켰을 때에 접속합니다.
사용자가 인증을 완료한 후 Hello 컴포넌트에 접근해야 하므로 /hello 경로에 접근했을 할 때 Hello 컴포넌트에 접근 할 수 있도록 경로를 추가해야 합니다.
이제 Login 컴포넌트에서 연결 버튼을 클릭하면 Hello 컴포넌트로 리디렉션됩니다.
지금까지 router-link를 통해 컴포넌트에서의 이동 및 이벤트를 작성해서 실행해 보았습니다.
다음 포스팅에서는 firebase를 실습해보도록 하겠습니다.
출처
해당 글은 medium에 Anas Mammeri의 포스팅 글을 번역한것입니다.