使用react typescript创建任务管理器
大家好!让我们使用一些现代工具创建一个简单但美观的 React 应用。我们将制作一个真正有用且外观不错的任务管理应用。没什么无聊的 - 让我们马上开始吧!
设置项目
首先,让我们创建项目。打开终端并运行:
npm create vite@latest my-task-app -- --template react-ts cd my-task-app
现在,让我们添加 Tailwind CSS 进行样式设置:
npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p
快速配置
更新你的`tailwind.config.js`:
export default { content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", ], theme: { extend: {}, }, plugins: [], }
将 Tailwind 添加到你的 `src/index.css`:
@tailwind base; @tailwind components; @tailwind utilities;
让我们创造一些很酷的东西
我们将创建一个任务管理器,可以添加、完成和删除任务。首先,让我们在“src/types.ts”中定义任务类型:
export interface Task { id: number; text: string; completed: boolean; }
现在,让我们在 `src/App.tsx` 中创建我们的主要应用程序:
import { useState } from 'react' import { Task } from './types' function App() { const [tasks, setTasks] = useState([]) const [newTask, setNewTask] = useState('') const addTask = () => { if (!newTask.trim()) return setTasks([ ...tasks, { id: Date.now(), text: newTask, completed: false } ]) setNewTask('') } const toggleTask = (id: number) => { setTasks(tasks.map(task => task.id === id ? { ...task, completed: !task.completed } : task )) } const deleteTask = (id: number) => { setTasks(tasks.filter(task => task.id !== id)) } return ( ) } export default AppTask Manager
setNewTask(e.target.value)} className="flex-1 p-2 border rounded-l-lg focus:outline-none focus:border-blue-500" placeholder="Add a new task..." />{tasks.map((task) => ())}
运行应用程序
启动开发服务器:
npm run dev
就这样!现在您拥有了一个功能齐全的任务管理器,外观简洁、现代。以下是我们构建的内容:
让它变得更好
想要更进一步吗?以下是您可以添加的一些快速改进:
// Add and update to App.tsx // Initialize state with a function that checks localStorage const [tasks, setTasks] = useState(() => { const savedTasks = localStorage.getItem('tasks') return savedTasks ? JSON.parse(savedTasks) : [] }) const [newTask, setNewTask] = useState('') // Only need one useEffect to handle updates useEffect(() => { localStorage.setItem('tasks', JSON.stringify(tasks)) }, [tasks]) // Rest of your code remains the same
// Add to input element onKeyPress={(e) => { if (e.key === 'Enter') addTask() }}
就这样!现在您有了一个实用且外观漂亮的现代 React 应用。最好的部分是什么?它使用现代工具和最佳实践构建,但保持了简单和可维护性。
想要尝试吗?尝试添加类别、截止日期或优先级别,让它更加实用!
记住:好的代码不必太复杂。保持简单、易读且实用!🚀