TGViewer
CodeTrail🚀 CodeTrail🚀 @codetrailweb · 60 subscribers
Post #46 156
⚛️ React

پشت صحنه اجرای کدهای React چه اتفاقی می‌افته؟🤔

وقتی یک کامپوننت React رو می‌نویسیم، مرورگر مستقیماً کد JSX ما رو اجرا نمی‌کنه

1⃣ ابتدا JSX چه می‌شه؟
کدی مثل:

function App() {
return <h1>Hello</h1>;
}

در ابتدا توسط ابزارهای مربوط به Build پردازش می‌شه و JSX به JavaScript تبدیل میشه

2⃣ مفهوم React Element

بعد از پردازش JSX، یک ساختار داده‌ای به نام React Element ایجاد میشه
این ساختار فقط توصیف می‌کنه که UI باید چه شکلی باشه

مثلاً به صورت مفهومی:
{
type: "h1",
props: {
children: "Hello"
}
}
📌 این Object خودش DOM واقعی نیست، فقط توصیفی از UI موردنظره

3⃣ مفهوم Virtual DOM

ری‌اکت برای مدیریت UI، یک نمایش از ساختار UI رو در حافظه نگه می‌داره که بهش معمولاً Virtual DOM گفته می‌شه

وقتی State یا Props تغییر می‌کنن، ری‌اکت خروجی جدید کامپوننت رو محاسبه می‌کنه

4⃣ مفهوم Reconciliation

بعد از ایجاد خروجی جدید، ری‌اکت وضعیت جدید رو با وضعیت قبلی مقایسه می‌کنه
به این فرآیند Reconciliation میگن

در این مرحله ری‌اکت بررسی می‌کنه کدوم قسمت‌های UI واقعاً تغییر کردن و نیاز به به‌روزرسانی دارن

5⃣ مفهوم Fiber

در معماری مدرن ری‌اکت، ساختار داخلی مهمی به نام Fiber وجود داره

فایبر به ری‌اکت اجازه می‌ده کارهای مربوط به رندرینگ رو به واحدهای کوچک‌تر تقسیم و مدیریت کنه

این معماری به ری‌اکت کمک می‌کنه کارهای مختلف رو بهتر زمان‌بندی و اولویت‌بندی کنه

6⃣ مفهوم Render Phase

در مرحله Render Phase، ری‌اکت کامپوننت‌ها رو اجرا می‌کنه تا مشخص بشه UI جدید باید چه شکلی باشه
مثلاً:
function Counter() {
return <h1>10</h1>;
}
در این مرحله بیشتر داریم UI جدید رو محاسبه می‌کنیم و هنوز الزاماً تغییری روی DOM واقعی ایجاد نشده

7⃣ مفهوم Commit Phase

بعد از اینکه ری‌اکت مشخص کرد چه تغییراتی لازمه، وارد مرحله Commit Phase میشه

در این مرحله تغییرات لازم روی DOM واقعی اعمال می‌شن

به صورت ساده:
Render
↓
Reconciliation
↓
Commit
↓
DOM Update

8⃣ بعد از تغییر DOM چه می‌شه؟

بعد از تغییر DOM، مرورگر باید صفحه رو دوباره پردازش کنه

به صورت ساده این مراحل اتفاق می‌افتن:

DOM
↓
Style Calculation
↓
Layout
↓
Paint
↓
Composite

در این مراحل مرورگر مشخص می‌کنه عناصر چه Styleای داشته باشن، کجا قرار بگیرن و چطور روی صفحه نمایش داده بشن

9⃣ مفهوم useEffect

یکی از اشتباهات رایج اینه که فکر کنیم "useEffect" هنگام Render اجرا میشه

در حالت معمول، Effectها بعد از Commit شدن تغییرات اجرا می‌شن
مثلاً:
useEffect(() => {
console.log("Effect");
}, []);

یعنی ابتدا React UI رو محاسبه می‌کنه و تغییرات لازم رو Commit می‌کنه، سپس Effect اجرا میشه

0⃣1⃣ وقتی State تغییر می‌کنه چه اتفاقی می‌افته؟
فرض کنیم این State رو داریم:

const [count, setCount] = useState(0);
وقتی این کد اجرا بشه:
setCount(count + 1);
تقریباً این مسیر اتفاق می‌افته:
State Update
↓
React Scheduling
↓
Render Phase
↓
Reconciliation
↓
Commit Phase
↓
DOM Update
↓
Browser Rendering
در نهایت کاربر UI جدید رو روی صفحه می‌بینه

📌 یک نکته مهم

ری‌اکت خودش باعث نمی‌شه DOM مرورگر جادویی سریع‌تر بشه

ری‌اکت بیشتر مدیریت تغییرات UI رو ساده‌تر می‌کنه و تصمیم می‌گیره چه تغییراتی باید روی DOM اعمال بشن

سرعت واقعی برنامه به چیزهای مختلفی مثل حجم JavaScript، تعداد Renderها، ساختار کامپوننت‌ها، اندازه DOM و هزینه‌ی Rendering مرورگر بستگی داره

🧠 جمع‌بندی

به طور خلاصه، وقتی یک State در React تغییر می‌کنه:
State Change
↓
Render
↓
Reconciliation
↓
Commit
↓
DOM Update
↓
Browser Rendering
↓
Pixels on Screen

📌 مفاهیم مهم پشت React:

React Element → توصیف UI

Virtual DOM → نمایش UI در حافظه

Reconciliation → پیدا کردن تفاوت‌های UI قبلی و جدید

Fiber → معماری داخلی برای مدیریت کارهای React

Render Phase → محاسبه UI جدید

Commit Phase → اعمال تغییرات روی DOM

Browser Rendering → تبدیل تغییرات DOM به چیزی که روی صفحه می‌بینیم

چیزی که ما فقط با یک "setState" می‌بینیم، پشت صحنه زنجیره‌ای از اتفاقاته

🔗 https://t.me/codetrailWeb
#Frontend
  • ❤ 3
  • 🔥 1
More from @codetrailweb
  1. Oct 5, 2026📅 چند متد کاربردی Date در JavaScript کار با تاریخ توی JavaScript اولش یه کم گیج‌کننده به…
  2. Sep 29, 2026📚 یک منبع مفید برای یادگیری JavaScript اگر در حال یادگیری یا کار با JavaScript هستید، Jav…
  3. Sep 19, 2026⚡ چند ترفند کاربردی Emmet در VS Code اگر با HTML و CSS کار می‌کنی، ابزار Emmet می‌تونه کلی…
  4. Sep 18, 2026📍 یه قابلیت جالب JavaScript می‌دونستی به‌جای اینکه آرایه‌ای از Objectها رو با ()console.l…
  5. Sep 15, 2026💡JavaScript چرا وقتی این کد رو اجرا می‌کنیم، ترتیب اعداد درست درنمیاد؟ 🤔 const numbers =…
  6. Sep 9, 2026💡 جواب چالش JavaScript 👆 ⬅️ جواب false هست چون در JavaScript، Objectها و Arrayها با Refe…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →