برنامه نویسی

🚀 روز نهم: ماشین حساب تاریخ پویا 🚀

ساخت یک ماشین حساب تاریخ پویا 🗓️

امروز، من یک پروژه هیجان انگیز را آغاز کردم تا درک خود را از مدیریت حالت، تعامل اجزا و رندر شرطی در React عمیق تر کنم. هدف پروژه ایجاد یک ماشین حساب تاریخ پویا بود که تاریخ ها را بر اساس ورودی کاربر تنظیم می کند. در اینجا نکات کلیدی و برجسته تجربه یادگیری من آمده است:

یادگیری های کلیدی:

1️⃣ مدیریت دولتی: یاد گرفتید چگونه چندین حالت را برای مرحله، شمارش و تاریخ با استفاده از React مدیریت کنید useState قلاب.

2️⃣ تعامل مؤلفه ها: کاوش وضعیت عبور و عملکرد به عنوان لوازم جانبی برای اجزای کودک برای تعامل موثر.

3️⃣ رندر مشروط: پیام‌های پویا پیاده‌سازی شده که تعداد روزهای قبل یا از امروز را منعکس می‌کنند.

تمرین عملی:

محاسبه تاریخ دینامیک: عملکردی برای افزودن روز به تاریخ فعلی و به روز رسانی نمایشگر بر اساس ورودی کاربر ایجاد کرد.
رابط کاربری تعاملی: یک رابط بصری با دکمه هایی برای افزایش/کاهش تعداد و مقادیر گام ساخته شده است.
پیام های مشروط: نمایش پیام های متنی که بر اساس تعداد تغییر می کنند، تاریخ های آینده یا گذشته را نشان می دهند.

تفکیک پروژه:

جزء برنامه

را App جزء به عنوان ریشه عمل می کند و می پیچد Counter جزء.

import "./App.css";
import { useState } from "react";

function App() {
  return (
    div className="container">
      Counter />
    /div>
  );
}
وارد حالت تمام صفحه شوید

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

کامپوننت شمارنده

منطق اصلی را برای شمارش روزها و به روز رسانی تاریخ مدیریت می کند.

function Counter() {
  const [step, setStep] = useState(1);
  const [count, setCount] = useState(0);
  const [date, setDate] = useState(new Date());

  const addDaysToDate = (date, days) => {
    const result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
  };

  const incrementCount = () => {
    setCount((s) => s + step);
    setDate(addDaysToDate(new Date(), count + step));
  };

  const decrementCount = () => {
    setCount((s) => s - step);
    setDate(addDaysToDate(new Date(), count - step));
  };

  const incrementStep = () => {
    setStep((s) => s + 1);
  };

  const decrementStep = () => {
    setStep((s) => s - 1);
  };

  return (
    
      Title date={date.toDateString()} count={count} />
      Step
        step={step}
        incrementStep={incrementStep}
        decrementStep={decrementStep}
      />
      Count
        count={count}
        incrementCount={incrementCount}
        decrementCount={decrementCount}
      />
    />
  );
}
وارد حالت تمام صفحه شوید

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

جزء عنوان

تاریخ جاری را با یک پیام پویا بر اساس تعداد نمایش می دهد.

function Title({ date, count }) {
  let message;
  if (count  0) {
    message = `${Math.abs(count)} days before today was ${date}`;
  } else if (count > 0) {
    message = `${count} days from today is ${date}`;
  } else {
    message = `Today is ${date}`;
  }
  return h1>{message}/h1>;
}
وارد حالت تمام صفحه شوید

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

مولفه مرحله

تنظیم مقدار مرحله را کنترل می کند.

function Step({ step, incrementStep, decrementStep }) {
  return (
    div>
      p>Step: {step}/p>
      button onClick={incrementStep}>+/button>
      button onClick={decrementStep}>-/button>
    /div>
  );
}
وارد حالت تمام صفحه شوید

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

مولفه شمارش

تنظیم مقدار شمارش را مدیریت می کند.

function Count({ count, incrementCount, decrementCount }) {
  return (
    div>
      p>Count: {count}/p>
      button onClick={incrementCount}>+/button>
      button onClick={decrementCount}>-/button>
    /div>
  );
}
وارد حالت تمام صفحه شوید

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

شما می توانید کار پروژه را در اینجا مشاهده کنید:

OKyZp7s

جادوی اینترنت را در Imgur، یک مقصد سرگرمی مبتنی بر جامعه کشف کنید. با جوک‌های خنده‌دار، میم‌های پرطرفدار، گیف‌های سرگرم‌کننده، داستان‌های الهام‌بخش، ویدیوهای ویروسی و موارد دیگر از کاربران، روحیه خود را تقویت کنید.

فاویکون
imgur.com


نتیجه

این پروژه تمرینی عالی برای درک و اجرای مدیریت React State و تعامل اجزا بود. این به من اجازه داد تا همزمان با تقویت مفاهیم اصلی React، یک برنامه کاربردی ایجاد کنم. من هیجان زده هستم که این آموخته ها را در سناریوهای پیچیده تر به کار ببرم و به سفر خود در تسلط بر React ادامه دهم!

منتظر اطلاعات بیشتر در مورد سفر یادگیری من باشید! 🚀

با دنبال کردن لینکدین و گیت هاب من برای دریافت پست ها و نمونه کدهای دقیق، از پیشرفت من به روز بمانید.

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

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

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

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