使用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 (
Task 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) => (
))}
)
}
export default App 运行应用程序
启动开发服务器:
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 应用。最好的部分是什么?它使用现代工具和最佳实践构建,但保持了简单和可维护性。
想要尝试吗?尝试添加类别、截止日期或优先级别,让它更加实用!
记住:好的代码不必太复杂。保持简单、易读且实用!🚀