当前位置:首页 > VUE

vue实现简易任务看板

2026-02-24 02:55:16VUE

实现思路

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实现简易todolist

vue实现简易todolist

实现简易TodoList的步骤 创建Vue项目 使用Vue CLI或Vite快速初始化一个Vue项目。例如通过Vite创建: npm create vite@latest vue-todoli…

实现简易react

实现简易react

实现简易 React 的核心要素 要实现一个简易 React,需要模拟其核心功能:虚拟 DOM、组件化、状态管理和渲染机制。以下是关键步骤和代码示例。 虚拟 DOM 结构 虚拟 DOM 是真实 D…

js实现简易换肤

js实现简易换肤

实现简易换肤的方法 通过JavaScript实现简易换肤功能,通常涉及动态修改CSS样式或切换CSS文件。以下是几种常见方法: 使用CSS变量切换主题 定义CSS变量并在JavaScript中修改这…

JS实现简易转盘抽奖

JS实现简易转盘抽奖

实现思路 使用HTML+CSS构建转盘界面,通过JavaScript控制旋转动画和抽奖逻辑。核心是随机生成旋转角度,结合CSS过渡效果实现平滑停止。 HTML结构 <div class="w…

uniapp 简易框架

uniapp 简易框架

uniapp 简易框架搭建方法 环境准备 安装 HBuilderX 作为开发工具,确保已配置 Node.js 环境。通过 HBuilderX 创建 uni-app 项目时选择默认模板或自定义模板。…

简易实现vue

简易实现vue

简易 Vue 实现核心思路 创建一个极简的 Vue 实现需要理解其核心机制:数据响应式、模板编译和虚拟 DOM。以下是一个简化版实现框架,仅包含核心功能。 数据响应式系统 通过 Object.def…