13. Todo - Update (상태)
간단한 Todo App 을 만들어봅니다.
Last updated
Was this helpful?
간단한 Todo App 을 만들어봅니다.
Last updated
Was this helpful?
Was this helpful?
// App.vue
export default {
// ...
methods: {
insertTodo(text) { // ... }
removeTodo(id) { // ... },
updateDone(id) {
const todos = [...this.todos];
const todo = todos.find(todo => todo.id === id);
if (todo) {
todo.isDone = !todo.isDone;
this.todos = todos;
}
}
}
};// App.vue
<template>
<div id="app">
<section class="todoapp">
<Header @insertTodo="insertTodo" />
<Todo :todos="todos" @removeTodo="removeTodo" @updateDone="updateDone" />
<Footer />
</section>
</div>
</template>// Todo.vue
<script>
export default {
props: {
todos: { type: Array, default: () => [] }
},
methods: {
handleRemove(id) { // ... },
handleDone(id) {
this.$emit("updateDone", id);
}
}
};
</script>// Todo.vue
<template>
<section class="main">
<ul class="todo-list">
<li
:class="{todo: true, completed: isDone }"
v-for="({ id, text, isDone }) in todos"
:key="id"
>
<div class="view">
<input class="toggle" type="checkbox" :checked="isDone" @click="handleDone(id)" />
<label>{{ text }}</label>
<button class="destroy" @click="handleRemove(id)"></button>
</div>
<input class="edit" type="text" />
</li>
</ul>
</section>
</template>