Vue3 Composition API 实战教程:构建动态任务管理器 | 前端开发指南

2025-08-23 0 303

const { createApp, ref, reactive, computed, onMounted, watch } = Vue;

const app = createApp({
setup() {
// 使用ref创建响应式基本类型数据
const newTask = ref(”);
const filter = ref(‘all’);

// 使用reactive创建响应式对象
const state = reactive({
tasks: [],
nextId: 1
});

// 从localStorage加载数据
const loadTasks = () => {
const savedTasks = localStorage.getItem(‘vue3-tasks’);
if (savedTasks) {
const parsed = JSON.parse(savedTasks);
state.tasks = parsed.tasks;
state.nextId = parsed.nextId;
}
};

// 保存数据到localStorage
const saveTasks = () => {
localStorage.setItem(‘vue3-tasks’, JSON.stringify({
tasks: state.tasks,
nextId: state.nextId
}));
};

// 使用computed创建计算属性
const filteredTasks = computed(() => {
switch (filter.value) {
case ‘active’:
return state.tasks.filter(task => !task.completed);
case ‘completed’:
return state.tasks.filter(task => task.completed);
default:
return state.tasks;
}
});

// 任务统计
const taskStats = computed(() => {
const total = state.tasks.length;
const completed = state.tasks.filter(task => task.completed).length;
const active = total – completed;
return { total, completed, active };
});

// 添加新任务
const addTask = () => {
if (newTask.value.trim()) {
state.tasks.push({
id: state.nextId++,
title: newTask.value.trim(),
completed: false,
createdAt: new Date()
});
newTask.value = ”;
saveTasks();
}
};

// 删除任务
const deleteTask = (id) => {
state.tasks = state.tasks.filter(task => task.id !== id);
saveTasks();
};

// 切换任务完成状态
const toggleTask = (id) => {
const task = state.tasks.find(task => task.id === id);
if (task) {
task.completed = !task.completed;
saveTasks();
}
};

// 清除已完成任务
const clearCompleted = () => {
state.tasks = state.tasks.filter(task => !task.completed);
saveTasks();
};

// 使用watch监听变化
watch(() => state.tasks, saveTasks, { deep: true });

// 使用onMounted生命周期钩子
onMounted(() => {
loadTasks();
});

// 返回模板中需要使用的数据和方法
return {
newTask,
filter,
state,
filteredTasks,
taskStats,
addTask,
deleteTask,
toggleTask,
clearCompleted
};
},
template: `

基于Composition API构建的动态任务管理应用



0″ style=”border: 1px solid #eee; border-radius: 4px;”>

{{ task.title }}

创建于: {{ new Date(task.createdAt).toLocaleString() }}

{{ filter === ‘all’ ? ‘暂无任务,添加一个新任务吧!’ :
filter === ‘active’ ? ‘没有未完成的任务’ : ‘没有已完成的任务’ }}
0″ style=”margin-top: 20px;”>

技术要点解析

  • Composition API: 使用setup()函数组织代码,将相关功能逻辑组合在一起
  • 响应式数据: 使用ref处理基本类型,reactive处理对象类型
  • 计算属性: 使用computed根据状态派生新数据
  • 生命周期钩子: 使用onMounted在组件挂载时加载数据
  • 数据监听: 使用watch监听任务数组变化并自动保存
  • 本地存储: 使用localStorage实现数据持久化

`
});

app.mount(‘#app’);

Vue3 Composition API 实战教程:构建动态任务管理器 | 前端开发指南
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

淘吗网 vue3 Vue3 Composition API 实战教程:构建动态任务管理器 | 前端开发指南 https://www.taomawang.com/web/vue3/950.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务