問題

3
Vue.js

Vueでアプリレイアウトを作ろう! フォーム編

Vue.jsの問題に挑戦しよう!

問題

Vueでアプリレイアウトを作ろう! フォーム編

今度はListComponentにFormを追加してリストにデータを
pushできるようにしよう。
今回は特にFormをコンポーネント化する必要はない。
どのコンポーネントにForm要素を追加するのかをよく考えて実装してみよう。

あらかじめエディタに書くコード

                    --- 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¥
                
                    --- 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¥
                
                    --- List.vue
<template>
  <div>
    <div class="main-form-wrapper">
      <form v-on:submit.prevent="addDream">
        <input type="text" v-model="newDreamName" class="form-input" placeholder="あなたの夢を追加してください">
        <input type="submit" class="form-submit">
      </form>
    </div>
    <div class="main-list-wrapper">
      <ul class="main-list">
        <listitem v-for="dream in dreams" :dream="dream" :key="dream.id"></listitem>
      </ul>
    </div>
  </div>
</template>
<script>
</script>
<style>
  .main-list-wrapper, .main-form-wrapper{
    background: #fff;
    width: 80%;
    margin: 2rem auto;
    border-radius: 15px;
  }
  .main-list {
    padding: 2rem;
    text-align: left;
  }
  .main-form-wrapper .form-input {
    width: 30%;
    margin: 30px;
    border: 1px solid #ddd;
    border-radius: 5px;
    height: 40px;
    padding-left: 8px;
  }
  .main-form-wrapper .form-submit {
    background: #40b983;
    color: #fff;
    border: none;
    padding: 8px 16px;
    border-radius: 5px;
  }
</style>
¥Vue¥
                

期待する画面

解答と解説(Vueでアプリレイアウトを作ろう! フォーム編)

解説

LINE登録して解答を見る

※ご登録後トークルーム下部にあるメニュー内
「無料問題集※解答付き」を押すと
解答閲覧用URLが届きます

ポインとしては、`v-on:submit.prevent="addDream"`の部分で、ここを普通のv-on:submitだとページ遷移が発生して
配列に追加しデータがすぐに消えてしまうから気をつけて欲しい。

さらにスキルアップしたい方は公式LINEから「Vue.js」と送信すると動画が見れます。

LINE登録して動画を視聴する
学習の事・キャリアの事、何でもOK!無料相談に申し込む