전체 방문자
오늘
어제
  • 전체 글
    • HTML
    • CSS
    • Javascript
    • React
    • Typescript
    • Next.js
    • Webpack
    • Vue.js
    • Git & GitHub
    • Error
    • Study
    • 개발 일지✨

블로그 메뉴

  • 💡
  • ⚙️
hELLO · Designed By 정상우.
하루

Home

컴포넌트 등록과 props 속성
Vue.js

컴포넌트 등록과 props 속성

2021. 12. 3. 00:25

컴포넌트 등록

Vue에서 컴포넌트는 미리 정의된 옵션을 가진 Vue 인스턴스이다.

기본적으로 컴포넌트의 보이는 부분을 표시할 때에는 template을 이용해서 작성해주면 된다.

// todo-item 이름을 가진 컴포넌트를 정의
Vue.component('todo-item', {
  template: '<li>할일 항목 하나입니다.</li>'
})

var app = new Vue(...)
<ol>
  <!-- todo-item 컴포넌트의 인스턴스 만들기 -->
  <todo-item></todo-item>
</ol>

 

<body>
    <div id="app">
        <app-header></app-header>  <!--인스턴스 생성-->
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        new Vue({
            // 인스턴스 옵션
            el: '#app',
            components: {
                // 컴포넌트 등록 - '컴포넌트 이름': 컴포넌트내용,
                'app-header': {
                    template: '<h1>컴포넌트</h1>'
                }
            }
        })
    </script>
</body>

하지만 이러한 컴포넌트 등록은 컴포넌트를 사용할 때마다 똑같은 텍스트를 렌더링할 뿐, 부모 영역의 데이터를 자식 컴포넌트에게 전달할 수 있어야 한다.

 

Props 전달

v-bind 를 사용하여 각각의 반복되는 컴포넌트를 전달할 수 있다.

v-bind:프롭스 속성이름="상위 컴포넌트의 데이터"
<div id="app">
   <app-header v-bind:title="str"></app-header>
</div>

👉 "이 요소의 title 속성을 Vue 인스턴스의 str 속성으로 최신상태를 유지한다."는 의미 

 

<body>
    <div id="app">
        <app-header v-bind:title="str"></app-header>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        new Vue({    // <Root>
            // 인스턴스 옵션
            el: '#app',
            data: {
                str: '프롭스 문자열'
            },
            components: {
                'app-header': {    // <AppHeader>
                    props: ['title'],
                    template: '<h1>{{ title }}</h1>'
                }
            }
        })
    </script>
</body>

 

    'Vue.js' 카테고리의 다른 글
    • Vue.js 시작하기

    티스토리툴바