Todo App with React

completed web-app

Todo App with React

A modern todo application built with React, featuring drag-and-drop, categories, and local storage.

🛠️ Technologies

ReactTypeScriptTailwind CSSVite

📅 Timeline

Created:
Last Updated:

🏷️ Tags

reacttypescriptproductivity

一个功能完整的待办事项应用,展示了现代 React 开发的最佳实践。

🎯 功能特性

  • 任务管理:添加、编辑、删除、标记完成
  • 分类系统:自定义分类和标签
  • 拖拽排序:直观的任务重新排序
  • 数据持久化:本地存储,刷新不丢失
  • 响应式设计:完美适配移动端

🛠️ 技术实现

状态管理

使用 React Context + useReducer 实现全局状态管理:

const TodoContext = createContext<TodoContextType>(null!);

export const TodoProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
  const [state, dispatch] = useReducer(todoReducer, initialState);
  // ...
};

拖拽功能

集成 @dnd-kit 实现流畅的拖拽体验:

import { DndContext, closestCenter } from '@dnd-kit/core';

function handleDragEnd(event: DragEndEvent) {
  const { active, over } = event;
  if (active.id !== over?.id) {
    // 重新排序逻辑
  }
}

📱 用户体验

  • 快捷键支持:Ctrl+N 新建任务,Esc 取消编辑
  • 主题切换:支持浅色和深色主题
  • 动画效果:流畅的过渡动画和微交互
  • 无障碍支持:完整的键盘导航和屏幕阅读器支持

🚀 性能优化

  • 使用 React.memo 和 useMemo 避免不必要的重渲染
  • 虚拟滚动处理大量任务
  • 懒加载和代码分割

📈 学习收获

这个项目让我深入了解了:

  • React Hooks 的高级用法
  • 复杂状态管理的最佳实践
  • 用户体验设计原则
  • 性能优化技巧