برنامه نویسی

Task manager را با استفاده از 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<Task[]>([])
  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 (
    <div className="min-h-screen bg-gray-100 py-8">
      <div className="max-w-md mx-auto bg-white rounded-lg shadow-md p-6">
        <h1 className="text-2xl font-bold text-center mb-6">Task Manager</h1>

        <div className="flex mb-4">
          <input
            type="text"
            value={newTask}
            onChange={(e) => 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..."
          />
          <button
            onClick={addTask}
            className="bg-blue-500 text-white px-4 rounded-r-lg hover:bg-blue-600"
          >
            Add
          </button>
        </div>

        <div className="space-y-2">
          {tasks.map(task => (
            <div
              key={task.id}
              className="flex items-center p-3 bg-gray-50 rounded-lg"
            >
              <input
                type="checkbox"
                checked={task.completed}
                onChange={() => toggleTask(task.id)}
                className="mr-3"
              />
              <span className={`flex-1 ${task.completed ? 'line-through text-gray-500' : ''}`}>
                {task.text}
              </span>
              <button
                onClick={() => deleteTask(task.id)}
                className="text-red-500 hover:text-red-700"
              >
                Delete
              </button>
            </div>
          ))}
        </div>
      </div>
    </div>
  )
}

export default App
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اجرای برنامه

سرور توسعه را راه اندازی کنید:

npm run dev
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همین! اکنون یک مدیر وظیفه کاربردی با ظاهری تمیز و مدرن دارید. در اینجا چیزی است که ما ساخته ایم:

  • یک طرح پاسخگو با طراحی کارت مرکزی
  • فیلد ورودی با دکمه افزودن متصل
  • لیست وظایف با تغییر و حذف تکمیل
  • انیمیشن ها را تمیز کنید و حالت های شناور را انجام دهید
  • TypeScript برای ایمنی نوع
  • یک ظاهر طراحی مدرن با Tailwind CSS

ساختن آن حتی بهتر

می خواهید آن را بیشتر ببرید؟ در اینجا چند پیشرفت سریع وجود دارد که می توانید اضافه کنید:

  1. فضای ذخیره‌سازی محلی را برای کارهای مداوم اضافه کنید:
// Add and update to App.tsx
// Initialize state with a function that checks localStorage
  const [tasks, setTasks] = useState<Task[]>(() => {
    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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. اضافه کردن پشتیبانی از صفحه کلید:
// Add to input element
onKeyPress={(e) => {
  if (e.key === 'Enter') addTask()
}}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همین! اکنون یک برنامه React مدرن دارید که در واقع مفید است و ظاهر خوبی دارد. بهترین قسمت؟ این با ابزارهای مدرن و بهترین شیوه ها ساخته شده است، اما همه چیز را ساده و قابل نگهداری نگه می دارد.

می خواهید آزمایش کنید؟ سعی کنید دسته‌ها، تاریخ‌های سررسید یا سطوح اولویت را اضافه کنید تا مفیدتر شود!

به یاد داشته باشید: کد خوب لازم نیست پیچیده باشد. آن را ساده، خوانا و کاربردی نگه دارید! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا