작업하면서 배우는 것들

Vue Router 싱글 컴포넌트 방식에서 Body 만 변경시키기

Jungsoomin :) 2020. 12. 21. 00:06

Router 에서 Body 만 바꾸겠다고 1시간 가량 삽질을 한 기록이다.

 

  • 일단, router.js 에서 Body 컴포넌트의 하위 컴포넌트로 링크에 따른 컴포넌트를 정의한다.
import Vue from 'vue';
import VueRouter from 'vue-router'

import LoginComp from "../components/body/LoginComp";
import Body from "../components/Body";
import Carousel from "../components/body/Carousel";

Vue.use(VueRouter);

export const router = new VueRouter({
  mode: 'history',
  routes: [
    {path: '/', component:Body, children:[
        {path: 'login', component: LoginComp},
        {path: '', component: Carousel}
      ]},
  ]
});

 

App.vue

<template>
  <div id="app" class="container-fluid">
    <Header></Header>
    <Body></Body>
    <Footer></Footer>
  </div>
</template>

 

Body.vue 에서  넘어갈 컴포넌트를 하위 컴포넌트로 지정하고 <router-view> 태그로 그때그때 변경하게끔한다.

<template>
  <div id="body">
    <router-view></router-view>
  </div>
</template>

<script>
import Carousel from "./body/Carousel";
import LoginComp from "./body/LoginComp";

export default {
  name: "Body",
  components: {
    Carousel,LoginComp
  },
}
</script>

<style scoped>
  #body{
    height: 200%;
  }
</style>