Nuxt.js+Vuetify+localStorageにてTODOを作る【ソースコード】
- CREATE:2022-05-16
- UPDATE:2022-05-16
←前回
↑以下のソースコード通りにすれば、こうなるはずです。(Nuxt.jsで動かしています)
ソースコード
<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",
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.get();
},
},
};
</script>
<style>
.max800 {
max-width: 800px;
margin: 0 auto;
}
</style>
解説を入れながら
<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>
//listには"key"が入っています
<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",
data() {
return {
text: "",
task: [],
};
},
mounted() {
this.get();
},
methods: {
//タスクの一覧を取得
get: function () {
this.task = [];
localStorageの中身の数だけForを行います。
for (var key in localStorage) {
//keyがあるかどうか
if (localStorage.hasOwnProperty(key)) {
this.task.push(key);
}
}
},
//タスクを追加
add: function () {
localStorage.setItem(localStorage.length, this.text);
this.text = "";
this.get();
},
data: function (n) {
//keyからvalueを受け取る。
var check = localStorage.getItem(n);
return check;
},
remove: function (n) {
//該当するkeyを持つlocalStorageを削除。
localStorage.removeItem(n);
//もう一度、整理する。
this.get();
},
},
};
</script>
<style>
.max800 {
max-width: 800px;
margin: 0 auto;
}
あとがき
簡易的な説明ですが、これで完結です。
正直なところ、文章力が致命的に欠けているんですよね自分・・・