前提・実現したいこと
nuxt.jsを使ってtodoアプリを作っています。
エラーは出ないのですが、Form.vueにある<v-text-field label="追加するタスク" placeholder="タスクを入力してください" v-model="title"></v-text-field>
に入力したものが、List.vueにある、 <td>{{ todo.title }}</td>
に反映されません。
発生している問題・エラーメッセージ
todoを入力したものが、ブラウザに表示されません。
該当のソースコード
store/todos.js
js
1 2export const state = () => ({ 3 todos: [], 4 title: '', 5}) 6 7export const mutations = { 8 addTodo: function(state, title) { 9 state.todos.push({ 10 title: title, 11 }); 12 console.log(title) 13 } 14} 15 16export const getters = { 17 title: function(state) { 18 return state.title 19 } 20} 21 22
components/Form.vue
vue
1<template> 2 <v-row> 3 <v-col cols="12"> 4 <v-card> 5 <v-form @submit.prevent="addTodo" > 6 <v-card-text> 7 <v-text-field label="追加するタスク" placeholder="タスクを入力してください" v-model="title"></v-text-field> 8 </v-card-text> 9 <v-card-text> 10 <v-text-field type="date" label="締切日" ></v-text-field> 11 </v-card-text> 12 <v-card-text> 13 <v-textarea label="内容" placeholder="内容を入力してください"></v-textarea> 14 </v-card-text> 15 <v-card-actions> 16 <v-btn type="submit">送信する</v-btn> 17 </v-card-actions> 18 </v-form> 19 </v-card> 20 </v-col> 21 </v-row> 22</template> 23 24<script> 25export default { 26 data() { 27 return { 28 todos: [], 29 title: "" 30 } 31 }, 32 methods: { 33 addTodo: function() { 34 this.$store.commit('todos/addTodo',{title: this.title}), 35 this.title = '' 36 } 37 } 38} 39</script>
components/List.vue
vue
1<template> 2<v-row> 3 <v-simple-table> 4 <thead> 5 <tr> 6 <th>ID</th> 7 <th>タイトル</th> 8 <th>期限</th> 9 </tr> 10 </thead> 11 <tbody> 12 <tr v-for="(todo, index) in todos" v-bind:key="todo.id"> 13 <td>{{ todo.id }}</td> 14 <td>{{ title }}</td> 15 <td>{{ todo.deadline }}</td> 16 <td ><v-icon>mdi-delete</v-icon></td> 17 <td> 18 <v-icon>mdi-account-edit</v-icon> 19 </td> 20 </tr> 21 </tbody> 22 </v-simple-table> 23</v-row> 24</template> 25 26<script> 27import {mapGetters} from 'vuex'; 28export default { 29 computed: { 30 todos() { 31 return this.$store.state.todos 32 }, 33 title() { 34 return this.$store.getters.title 35 } 36 }, 37} 38</script>
試したこと
components/Form.vueにある
this.$store.commit('todos/addTodo',{title: this.title}),
の上にconsole.logをしたら値は取れていますが、
store/todos.jsにある
js
1state.todos.push({ 2 console.log(title) 3 title: title, 4 });
をしたらしっかり値は取れてないです。
補足情報(FW/ツールのバージョンなど)
書籍も参考にしてやってみましたが、どうもうまくいきません。よろしくお願いします。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー