0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Nuxt.js】超シンプルなTodoリストを作成してみた【勉強4】

Last updated at Posted at 2020-08-25

はじめに

自分が勉強した内容のまとめなので、正確性は保証しません。

こちらのサイトにcodesandboxを埋め込んでいます。

実際の振る舞いを見ながらコードの確認ができるので非常に便利です。

シンプルにcodesandboxめちゃくちゃおすすめなので、気になる方使ってみてください。

Todo リストの作成

今回は今まで学習してきた知識を用いて Todo リストを作成してみましょう。

ループでデータを描画する v-for、データを入力する v-model、v-on:click を使います。

入力を反映してくれる Todo リストの完成像

まずは最初に完成像を確認してみましょう。

こちらのサイトにcodesandboxを埋め込んでいますので、実際の振る舞いをご確認ください。

Text Area に好きな文字列を入力し、Add Todo List のボタンを押せば、

Todo リストに文字列が追加されていくことがわかると思います。

入力を反映してくれる Todo リストのコード解説

< template >内のコードから解説していきます。

・v-for でループ処理をしているコード

<li v-for="todo in todos">{{ todo.item }}</li>

配列(todos)内に値が存在している限り、todo.item の中身を描画するループ処理を繰り返します。

・v-model で入力を受け付けるコード

<input type="text" v-model="newItem" placeholder="やることを入力">

text タイプで newItem に text データを格納しています。

・v-on:click で処理を呼び出すコード

<button v-on:click="add">Add Todo List</button>

ボタンがクリックされた際に、< script >で定義した add 処理を呼び出します。

続いて、< script >内のコードを解説していきます。

・データの定義

data: function() {
  return {
    newItem: "",
    todos: []
  };
},

ユーザーの入力を受け付けるデータとして newItem、

これまでに入力されたデータを格納しておくために配列 todos を用意しています。

・todos に格納する add 処理

add: function() {
  let todosItem = {
    item: this.newItem
  };
  this.todos.push(todosItem);
  this.newItem = "";
}

オブジェクト型として格納するために let todosItem を宣言しています。

this.todos.push により、配列の最後尾に todosItem を格納します。

最後に this.newItem の中身をリセットしています。

おわり

今回はレイアウトも気にせずに簡単な Todo アプリを作ってみました。

HTML、CSS だけでは実現できなかった、

動きのあるページ作りが簡単に実装できることがわかったと思います。

最後まで見て頂きありがとうございました!他の記事も宜しくお願い致します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?