반응형
먼저 기존 App.vue에 있던 ul을 components 안에 todoList.vue 를 새로 생성하고 옮겨준다
<template>
<ul class="list-group "
v-for="(i,index) in todolist"
v-bind:key="i.id">
<li class="list-group-item d-flex align-items-center mt-2">
<div class="form-check flex-grow-1">
<input class="CheckInput"
v-model="i.isdone"
type="checkbox">
<label class="checkLabel"
:class="{todoStyle:i.isdone}"
>{{i.sbj}} </label>
</div>
<div>
<button class= "btn btn-danger btn-sm"
@click="deleteitem(index)">삭제</button>
</div>
</li>
</ul>
</template>
<script>
export default {
}
</script>
<style>
</style>
//components/TodoList.vue
부모 컴포넌트에 경로를 import해주고, 컴포넌트역시 등록해준다
import TodoList from './components/TodoList.vue';
//현재 등록된 컴포넌트는 TodoForm과 TodoList 자식 컴포넌트가 두개 있음을 뜻함
components:{
TodoForm,TodoList
},
App.vue의 본문에서
<TodoList :todolist="todolist"/>
컴포넌트 사용을 하는데
이때 :todolist는 자식컴포넌트로 보낼때의 이름 뒤의 todolist는 부모 컴포넌트에서 사용중인 함수 또는 변수(여기서는 배열 변수이다)
자식 컴포넌트인 TodoList.vue로 돌아가서
props:['todolist']//받아오는 이름 + 위에서 사용하는 이름 props는 return역할을 함께함
스크립트 안에 단순히 부모쪽에서 보낸 todolist 배열을 받는걸로도 할 수 있지만,
props를 객체로 만들수도있다
<script>
export default {
props:{
todolist:{ //받아올 그리고 자식컴포넌트에서 사용될 변수or함수명
type: Array, //타입설정
required: true, //필수인지 아닌지
}
}
}
</script>
이때 잘 모르고 앞서 부모 컴포넌트에서 <TodoList :ㅇㅇ="ㅁㅁ" /> 부분을 작성할때
ㅇㅇ가 자식으로 보낼때 명칭이라하여 todoListapp ="todolist" 로 하여 받았는데 안되길래 뭐가 문젤까 하다가
props를 사용하면 return이 따로 없어, 그 명칭 그대로 본문에서도 사용하기 때문에 안된것이다 (자식컴포 본문에서 todolist를 사용중) 따라서 부모에서 todoListapp으로 보낼거였으면 자식컴포넌트 TodoList.vue에서의 변수명을 다 바꿨어야 했던것
반응형
'FrontEnd > Vue3' 카테고리의 다른 글
Vue3 To do list 만들기 (8) 검색기능 추가하기 (0) | 2022.06.24 |
---|---|
Vue3 To do list 만들기 (7) props 주의사항 (0) | 2022.06.24 |
Vue3 To do list 만들기 (5) 데이터 emit (자식 컴포넌트 ->부모 컴포넌트) (0) | 2022.06.21 |
Vue3 컴포넌트 만들기 (0) | 2022.06.21 |
Vue3 To do list 만들기 (4) 버튼으로 배열 삭제 하기 (0) | 2022.06.21 |