Nuxt.js+Vuetify+localStorageにてTODOを作る【ソースコード】

  • CREATE:2022-05-11
  • UPDATE:2022-05-11

前回

概要

手っ取り早くソースコードを最初に載せます。
index.vue

<template>
  <v-container>
    <div class="max800">
      <form @submit.prevent="add">
        <v-row>
          <v-col cols="9">
            <v-text-field v-model="text" label="タスク"></v-text-field>
          </v-col>
          <v-col cols="3">
            <v-btn color="primary" type="submit" block> 追加 </v-btn>
          </v-col>
        </v-row>
      </form>

      <ul>
        <li v-for="list in task">
          <v-row>
            <v-col cols="9">
              {{ data(list) }}
            </v-col>
            <v-col cols="3">
              <v-btn color="error" block @click="remove(list)">削除</v-btn>
            </v-col>
          </v-row>
        </li>
      </ul>
    </div>
  </v-container>
</template>

<script>
export default {
  name: "IndexPage",
  head() {
    return {
      titleTemplate: null,
    };
  },
  data() {
    return {
      text: "",
      task: [],
    };
  },
  mounted() {
    this.get();
  },
  methods: {
    get: function () {
      this.task = [];
      for (var key in localStorage) {
        if (localStorage.hasOwnProperty(key)) {
          this.task.push(key);
        }
      }
    },
    add: function () {
      localStorage.setItem(localStorage.length, this.text);
      this.text = "";
      this.get();
    },
    data: function (n) {
      var check = localStorage.getItem(n);
      return check;
    },
    remove: function (n) {
      localStorage.removeItem(n);
      this.list = [];
      for (var key in localStorage) {
        if (localStorage.hasOwnProperty(key)) {
          this.list.push(key);
        }
      }
      this.get();
    },
  },
};
</script>


<style>
.max800 {
  max-width: 800px;
  margin: 0 auto;
}
</style>


こうなるはずです。

これでTODOが完成しました。
次回、localStorageについて解説します。