Vue_3

1 분 소요

컴포넌트

  • 컴포넌트는 HTML 엘리먼트를 확장하여 재사용 가능한 코드를 캡슐화하는데 도움이 됨.

    경우에 따라 특별한 is 속성으로 확장된 원시 HTML 엘리먼트로 나타낼수도 있음.

  • Vue 컴포넌트는 Vue 인스턴스이기도 해서 모든 옵션 객체를 사용 가능함.(같은 라이프 사이클 훅 사용가능)

컴포넌트 전역 등록

  • Vue.component(tagName, options) 를 사용
Vue.component('my-component',{
  // 옵션
})
  • 사용자 지정 태그 이름에 대한 규칙
    • 모두 소문자이어야 하고, 하이픈을 포함해야함.
<div id="example">
  <my-component></my-component> 
<div>
//등록
Vue.component('my-component',{
  template : '<div>사용자 정의 컴포넌트</div>'
})
// 루트 인스턴스 생성
new Vue({
    el: '#example'
})
  • template 속성은 컴포넌트가 출력할 HTML 코드를 입력하는곳

컴포넌트 지역 등록

  • components 인스턴스 옵션으로 다른 인스턴스/컴포넌트 범위에서만 사용 가능한 컴포넌트를 만들수 있음.
var newChild ={
    template : '<div></div>',
    data(){
        return {
            title : "Hi"
        }
    }
}

new Vue({
    el:"#example",
    components :{
        'my-component' : newChild
    }
})
  • 동일한 캡슐화는 디렉티브와 같은 다른 등록 가능한 Vue 기능에도 적용됨.
  • 컴포넌트에서 data 사용 시 data는 함수로 작성 해야함.
    • data() 가 return 하는 객체가 기존에 우리가 사용하던 data 와 동일한 역할을 함.
Vue.component('hello',{
    template : '<h1> <button @click="changeTitle"> return title </button></h1>',
    data(){
        return{
            title:'hi'
        }
    },
    methods: {
        changeTitle(){
            this.title = '변경 타이틀'
        }
    },
})

new Vue({
    el:"#app"
})
  <div id="app">
      <hello></hello>
      <hello></hello>
      <hello></hello>
  <div>

  • 하나의 컴포넌트를 다수로 사용 시 각자의 위치에서 각자의 역할을 독립적으로 수행함.

카테고리:

업데이트: