当前位置:首页 > VUE

用vue实现todolist

2026-03-10 08:02:37VUE

使用 Vue 实现 TodoList

以下是基于 Vue 3 的 Composition API 实现一个简单 TodoList 的完整代码示例。

创建 Vue 项目

通过 Vue CLI 或 Vite 创建一个新项目:

npm create vue@latest todolist
cd todolist
npm install

实现 TodoList 组件

src/components 目录下创建 TodoList.vue 文件:

<template>
  <div class="todo-app">
    <h1>Todo List</h1>
    <input
      v-model="newTodo"
      @keyup.enter="addTodo"
      placeholder="Add a new task"
    />
    <ul>
      <li v-for="(todo, index) in todos" :key="index">
        <span :class="{ completed: todo.completed }">
          {{ todo.text }}
        </span>
        <button @click="toggleTodo(index)">Toggle</button>
        <button @click="removeTodo(index)">Remove</button>
      </li>
    </ul>
  </div>
</template>

<script setup>
import { ref } from 'vue';

const newTodo = ref('');
const todos = ref([]);

const addTodo = () => {
  if (newTodo.value.trim() === '') return;
  todos.value.push({
    text: newTodo.value,
    completed: false
  });
  newTodo.value = '';
};

const toggleTodo = (index) => {
  todos.value[index].completed = !todos.value[index].completed;
};

const removeTodo = (index) => {
  todos.value.splice(index, 1);
};
</script>

<style>
.completed {
  text-decoration: line-through;
  color: #888;
}
.todo-app {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
ul {
  list-style: none;
  padding: 0;
}
li {
  display: flex;
  align-items: center;
  margin: 10px 0;
}
button {
  margin-left: 10px;
}
</style>

在 App.vue 中使用组件

修改 src/App.vue 文件:

<template>
  <TodoList />
</template>

<script setup>
import TodoList from './components/TodoList.vue';
</script>

运行项目

启动开发服务器:

用vue实现todolist

npm run dev

功能说明

  • 添加任务:在输入框中输入内容后按回车键
  • 标记完成:点击 "Toggle" 按钮切换任务完成状态
  • 删除任务:点击 "Remove" 按钮删除任务
  • 样式:已完成的任务会显示删除线和灰色文字

进阶改进建议

  1. 使用 Pinia 进行状态管理,实现多组件共享状态
  2. 添加本地存储功能,持久化保存任务数据
  3. 增加任务分类、优先级等功能
  4. 实现拖拽排序功能
  5. 添加动画效果提升用户体验

这个实现展示了 Vue 3 的基本用法,包括响应式数据、事件处理和条件样式绑定。可以根据需要进一步扩展功能。

标签: vuetodolist
分享给朋友:

相关文章

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

vue实现setinterval

vue实现setinterval

在 Vue 中使用 setInterval Vue 中可以通过生命周期钩子和方法结合 setInterval 实现定时任务。以下是一个完整的实现示例: <template> <…

vue实现视频

vue实现视频

Vue 实现视频播放的方法 在 Vue 项目中实现视频播放可以通过多种方式完成,以下是几种常见的方法: 使用 HTML5 的 <video> 标签 在 Vue 组件中直接使用 HTML…

vue 实现滑动

vue 实现滑动

Vue 实现滑动效果的方法 在Vue中实现滑动效果可以通过多种方式,以下是几种常见的方法: 使用CSS过渡和动画 通过Vue的<transition>组件结合CSS过渡或动画实现滑动效果…

vue 实现长按

vue 实现长按

实现长按功能的基本思路 在Vue中实现长按功能,通常需要监听元素的mousedown或touchstart事件,启动一个计时器。当用户按住元素超过设定的时间阈值时,触发长按回调函数。如果在时间阈值内触…

vue事件实现

vue事件实现

Vue 事件实现方法 在Vue中,事件处理是通过v-on指令或@简写来实现的。以下是几种常见的事件处理方式: 使用v-on指令绑定事件 <button v-on:click="handleC…