問題2:Vueでアプリレイアウトを作ろう! リスト編
次はメインコンポーネントの中のリストを作っていこう。
src
├── App.vue
├── assets
│ └── /* 画像等 */
├── components
│ ├── Main.vue
│ ├── Sidebar.vue
| |__ NavItem.vue
| |__ List.vue /* ファイルを追加 */
| |__ ListItem.vue /* ファイルを追加 */
└── main.js
src
├── App.vue
├── assets
│ └── /* 画像等 */
├── components
│ ├── Main.vue
│ ├── Sidebar.vue
| |__ NavItem.vue
| |__ List.vue /* ファイルを追加 */
| |__ ListItem.vue /* ファイルを追加 */
└── main.js
あらかじめエディタに書くコード
--- Main.vue
<template>
<div class="main-container">
<list></list>
</div>
</template>
<script>
/* 解答 */
</script>
<style>
.main-container {
width: 80%;
background: #ddd;
}
.main-container h1 {
padding-top: 50px;
}
</style>
¥Vue¥
--- List.vue
<template>
<div class="main-list-wrapper">
<ul class="main-list">
<listitem v-for="dream in dreams" :dream="dream" :key="dream.id"></listitem>
</ul>
</div>
</template>
<script>
/* コード記述 */
</script>
<style>
.main-list-wrapper{
background: #fff;
width: 80%;
margin: 2rem auto;
border-radius: 15px;
}
.main-list {
padding: 2rem;
text-align: left;
}
</style>
¥Vue¥
--- ListItem.vue
<template>
<div>
<li class="list-item">{{ dream.name }}</li>
</div>
</template>
<script>
/* コード記述 */
</script>
<style>
.list-item {
width: 100%;
padding: 8px;
margin-bottom: 10px;
list-style: none;
border-left: 5px solid #40b983;
border-bottom: 1px solid #40b983;
border-top: 1px solid #40b983;
border-right: 1px solid #40b983;
font-weight: 700;
}
.list-item:hover {
background: #40b983;
opacity: .8;
color: #fff;
}
</style>
¥Vue¥
期待する画面
解答ソースコード
--- Main.vue
<script>
import List from './List'
export default {
name: 'Main',
components: {
List
}
}
</script>
¥Vue¥
--- List.vue
<script>
import ListItem from './ListItem'
export default {
name: 'List',
components: {
ListItem
},
data() {
return{
dreams: [
{ id: 1, name: "フルスタックエンジニアになりたい"},
{ id: 2, name: "バックエンドエンジニアになりたい"},
{ id: 3, name: "フロントエンドエンジニアになりたい"},
{ id: 4, name: "データサイエンティストになりたい"},
{ id: 5, name: "スティーブジョブズになりたい"}
]
}
}
}
</script>
¥Vue¥
--- ListItem.vue
<script>
export default {
props: {
dream: {
type: Object,
}
}
}
</script>
¥Vue¥
#忍者CODE無料問題集で活動を記録しよう
完了にする!
からdreamオブジェクトを受け取るために、`type: Object`
を記述している。ちなみに配列を回すときはkey与えてあげないと、warningといって警告がコンソールにでるから必ず一緒に書くようにしよう。