Vue.js 实现 ToDo 应用:任务添加与删除
在这一节中,你将学习如何通过拆分组件的方式,实现待办事项(ToDo)应用中最核心的功能 —— 添加与删除任务。我们将创建两个组件:
TodoInput.vue
:用于添加任务的输入框组件。TodoItem.vue
:用于展示和删除每个任务的单个项组件。
项目结构如下:
src/
├── components/
│ ├── TodoInput.vue
│ └── TodoItem.vue
└── App.vue
TodoInput.vue:任务输入组件
这个组件接收用户输入的任务,并通过 add
事件传递给父组件。
代码示例:
src/components/TodoInput.vue
<template>
<div class="todo-input">
<input
v-model="newTask"
@keyup.enter="submitTask"
type="text"
placeholder="请输入任务,按 Enter 添加"
/>
<button @click="submitTask">添加</button>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const newTask = ref('')
const emit = defineEmits<{
(e: 'add', taskText: string): void
}>()
const submitTask = () => {
const text = newTask.value.trim()
if (text) {
emit('add', text)
newTask.value = ''
}
}
</script>
<style scoped>
.todo-input {
display: flex;
gap: 8px;
margin-bottom: 16px;
}
.todo-input input {
flex: 1;
padding: 8px;
}
.todo-input button {
padding: 8px 16px;
}
</style>