Muscardinus

Dynamic Component 본문

FrontEnd/Vue

Dynamic Component

Muscardinus 2022. 1. 7. 02:09
728x90

컴포넌트를 상황에 따라서 동적으로 보이게 하고 싶을때가 있다.

이런 때, Dynamic Component를 사용한다.

 

<template>
  <select v-model="componentName">
    <option value="Home">Home</option>
    <option value="About">About</option>
  </select>

  <component :is="componentName"></component>
</template>

<script>
import About from "@/components/About"
import Home from "@/components/Home"

export default {
  name: "App",
  components: {
    Home,
    About
  },
  data() {
    return {
      componentName: "Home"
    }
  }
}
</script>

component라는 것을 선언한다. 여기에 component를 선언한다는 것을 의미하고, :is에 컴포넌트의 이름이 나타나게 하면된다.

컴포넌트가 Unmount되면 기존에 가지고 있는 data도 날라간다.

 

이를 방지할려면,

  <keep-alive>
    <component :is="componentName"></component>
  </keep-alive>

이럴 경우, 컴포넌트가 unmount되지 않는다. 하지만, component가 사라지면서 어떠한 행위를 하고 싶으면 어떡할까?

그럴 경우,

<template>
  <h1>Home Page</h1>
</template>

<script>
export default {
  unmounted() {
    console.log("Home unmounted")
  },
  activated() {
    console.log("Home component activated");
  },
  deactivated() {
    console.log("Home component deactivated");
  }
}
</script>

Vue에서는 activated와 deactivated라는 함수를 지원한다.

728x90

'FrontEnd > Vue' 카테고리의 다른 글

Vue hooks  (0) 2022.01.09
Vue Transition  (0) 2022.01.09
slot  (0) 2022.01.07
Props Validation  (0) 2022.01.07
emit  (0) 2022.01.07
Comments