当前位置:首页 > VUE

vue实现简易任务看板

2026-02-24 02:55:16VUE

vue实现简易任务看板

vue实现简易任务看板

实现思路

Vue实现简易任务看板的核心在于组件化设计、状态管理和用户交互。通过列表展示任务,支持增删改查操作,利用Vue的响应式特性实现数据动态更新。

项目结构

src/
├── components/
│   ├── TaskList.vue    # 任务列表组件
│   ├── AddTask.vue     # 添加任务组件
├── App.vue             # 主组件

核心代码实现

状态管理(Vue 3 Composition API)

// App.vue
<script setup>
import { ref } from 'vue'
const tasks = ref([
  { id: 1, title: '设计原型', status: 'todo' },
  { id: 2, title: '开发功能', status: 'doing' }
])

function addTask(title) {
  tasks.value.push({
    id: Date.now(),
    title,
    status: 'todo'
  })
}

function deleteTask(id) {
  tasks.value = tasks.value.filter(task => task.id !== id)
}
</script>

任务列表组件

<!-- TaskList.vue -->
<template>
  <div class="task-column" v-for="status in ['todo', 'doing', 'done']" :key="status">
    <h3>{{ status.toUpperCase() }}</h3>
    <div 
      v-for="task in filteredTasks(status)" 
      :key="task.id"
      class="task-card"
      @click="changeStatus(task.id)"
    >
      {{ task.title }}
      <button @click.stop="deleteTask(task.id)">×</button>
    </div>
  </div>
</template>

<script setup>
const props = defineProps(['tasks', 'deleteTask'])
const emit = defineEmits(['changeStatus'])

function filteredTasks(status) {
  return props.tasks.filter(task => task.status === status)
}

function changeStatus(id) {
  emit('changeStatus', id)
}
</script>

添加任务组件

<!-- AddTask.vue -->
<template>
  <input 
    v-model="newTaskTitle"
    @keyup.enter="handleAdd"
    placeholder="输入任务后按回车"
  />
</template>

<script setup>
import { ref } from 'vue'
const newTaskTitle = ref('')
const emit = defineEmits(['addTask'])

function handleAdd() {
  if (newTaskTitle.value.trim()) {
    emit('addTask', newTaskTitle.value)
    newTaskTitle.value = ''
  }
}
</script>

样式设计

.task-column {
  width: 30%;
  margin: 0 1.5%;
  float: left;
  background: #f5f5f5;
  padding: 10px;
  border-radius: 5px;
}

.task-card {
  background: white;
  padding: 8px;
  margin: 5px 0;
  border-radius: 3px;
  cursor: pointer;
  position: relative;
}

.task-card button {
  position: absolute;
  right: 5px;
  top: 5px;
  background: transparent;
  border: none;
  cursor: pointer;
}

功能扩展建议

  1. 添加本地存储功能,使用localStorage持久化任务数据
  2. 实现拖拽排序功能,可通过vue-draggable库实现
  3. 增加任务优先级标记和过滤功能
  4. 添加任务详情编辑对话框

注意事项

  1. 使用key属性确保列表渲染性能
  2. 事件处理注意使用.stop修饰符防止事件冒泡
  3. 状态变更应当通过Vue的响应式方法进行
  4. 组件间通信推荐使用props/emit模式保持数据流清晰

标签: 看板简易
分享给朋友:

相关文章

vue 原理简易实现

vue 原理简易实现

Vue 原理简易实现 Vue 的核心原理包括响应式数据绑定、虚拟 DOM 和模板编译。以下是一个简化版的实现,展示 Vue 的基本工作机制。 响应式数据绑定 通过 Object.defineProp…

css看板制作

css看板制作

CSS 看板制作方法 使用 Flexbox 布局 通过 Flexbox 可以快速实现看板的横向排列效果。定义一个容器为 display: flex,内部卡片使用 flex-grow 或固定宽度。 .…

实现简易vue响应式

实现简易vue响应式

实现简易 Vue 响应式 要实现一个简易的 Vue 响应式系统,核心是利用 JavaScript 的 Object.defineProperty 或 ES6 的 Proxy 来劫持数据的变化,并在数据…

vue2简易实现

vue2简易实现

vue2 简易实现方法 Vue2 的简易实现可以通过手动构建核心功能来完成。以下是关键步骤: 数据响应式 使用 Object.defineProperty 实现数据劫持: function…

使用vue实现简易网页

使用vue实现简易网页

使用 Vue 实现简易网页 初始化 Vue 项目 安装 Vue CLI 工具(需提前安装 Node.js): npm install -g @vue/cli 创建新项目并选择默认配置: v…

简易实现vue

简易实现vue

简易 Vue 实现 以下是一个简化版 Vue 的实现思路,涵盖核心功能:数据响应式、模板编译和虚拟 DOM。 数据响应式 通过 Object.defineProperty 或 Proxy 实现数据劫…