<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های lambdaxyzt</title><link>https://virgool.ir/feed/@lambdaxyzt</link><description></description><language>fa</language><pubDate>2026-11-12 08:24:09</pubDate><image><url>https://files.virgool.ir/upload/users/199028/avatar/oAL5OQ.jpeg</url><title>lambdaxyzt</title><link>https://virgool.ir/@lambdaxyzt</link></image><item><title>React.JS واقعا چجوری کار میکنه ؟</title><link>https://virgool.ir/@lambdaxyzt/reactjs-واقعا-چجوری-کار-میکنه-oxx9f4ozhhe9</link><description>سلام بر دوستان ... من در این مطلب سعی دارم توضیح کلی و دقیق بدم ... دنبال این هستم که خودم یک فهم خیلی خوب از react کسب کنم و بعد با به اشتراک گذاشتن بیشتر یاد بگیرم ... به نظرم هرچی بهتر و دقیق تر react رو بفهمیم اپلیکیشن های خفن تری میتونیم بسازید.اولا ریکت چیه ؟ ولش کنید میتونید خیلی جاهای دیگه بخونید کلی ازش تعریف کردن ... چیکار میکنه و این داستانا ... ولی تعریف خودم اینه که :مرورگر همه گیر شده و با JS داخل اون میشه خیلی کارا و logic ها پیاده سازی کرد ... کتابخانه برای ساخت *UI زیاد اومده یکیش مثل  BackboneJS ولی خب react یه حرکتای  جالب و جدیدی زد که برای مدیریت پیچیدگی های UI وب اپلیکیشن ها خیلی جوابه و بخوای همون رو توی BackboneJS بزنی داستاناش زیاد تره.( و * UI چیه همون سایته ولی برای اپلیکیشن ها باید هی تغییر کنه دیگه شما کلیک میکنید اطلاعات ببینید اطلاعات جدید باید اضافه بشه و نمایش داده بشه ... حالا ممکنه صفحه refresh بشه و توی صفحه جدید اطلاعات جدید رو ببینید و یا ممکنه JS دیتا رو از سرور بگیره توی مرورگر اضافه کنه و به شما نمایش داده بشه). و react میگه آقاجان DOM مرورگر که سنگینه بخوای مستقیم دست بزنی element بزاری برداری و attribute ها رو تغییر بدی چرا چون به ازای هر scroll کاربر یا click -ش روی دکمه یکسری چیزا تغییر باید کنه ... اضافه بشه یا حذف بشه ... شاید یک element متنش تغییر پیدا کنه و یوزر نبینه چون بعدش دوباره متنش عوض میشه ... بهتر بیایم element های که قراره نمایش داده بشه روی کاغذ بیاریم ( روی مموری ) (خیلی بهتر و سبک چون DOM مرورگر تغییر نمیکنه) چجوری ؟ میگیم render شون میکنیم که در اصل میایم یکسری object های جاوااسکریپت میسازیم البته با property های خیلی کمتر ( شما برید property هایی داخل مرورگر برای یک element رو ببینید هزارتاست ) ...و react element , در اصل میایم react element رو render میکنیم یعنی میایم یه object ساده میسازیم اون میشه react element ما ولی روی کاغذه ( روی مموریه ... ذهنیه انگار){ &#xA;     $$typeof : Symbol ( react.element ),&#xA;     type : &#39;div&#39;&#xA;     key : null ,&#xA;     props : { } ,&#xA;     ref : null&#xA;}ایناها این شکلیه برید امتحان کنید توی 1 ثانیه جاوااسکریپت میتونه هزارتا از اینا بسازه براتون ( برید تست کنید ) این چیه ؟ react element ... (اون typeof و symbol نمیدونم چیه ولی یه طرز تعریف یه property خاص و فک کنم مخفی , برای object های جاوااسکریپت هست) کتابخونه react این رو به عنوان react element در نظر میگیره و اون Symbol ( react.element ) رو میبینه میفهمه react element هست اگر اون نباشه کاری به کارش نداره ( آدم حسابش نمیکنه )البته state ها و اینا هستا ولی توی این object ها نیست چرا ؟ بعدا دقیق تر میشه گفت ولی با توجه به اونا یک react element ساخته یا همون render میشهخب این چه ربطی به مرورگر داره ؟ خب ReactDOM میاد میبینه این react element رو و یک element با تگ &#39;div&#39; ( با توجه به همون type : &#39;div&#39; ) میاد توی DOM مرورگر اضافه میکنه و شما یه element با تگ &#39;div&#39; توی مرورگر میبینید. که شما با فک کنم createElement توی مرورگر هم میتونید اینکارو بکنید (یادم نیست متودش رو ) ... ReactArt میاد و react element با type به نام Text رو میگیره و یه متن رو توی canvas شما میکشه ...حالا اگر بخوایم این پایینی رو &lt;div class = &#34; loggdata &#34;&gt; &lt;/div&gt;رو نشون بدیم توی react element-ش باید چجوری باشه ؟{ &#xA;     $$typeof : Symbol ( react.element ),&#xA;     type : &#39;div&#39;&#xA;     key : null ,&#xA;     props : { &#xA;        className : &#34; loggdata &#34;&#xA;  } ,&#xA;     ref : null&#xA;}&gt;&gt;&lt;div class = &#34; loggdata &#34;&gt; server logs 2120/11/06 &lt;/div&gt;فقط شما برای اینکه این object توی مموری ساخته بشه یعنی  یک react element که render بشه باید چی بنویسید ؟import React from &#39;react&#39; ;&#xA;React.createElement( &#39;div&#39; , { className : &#34;loggdata&#34; } , [ &#39;server logs 2120/11/06  &#39;  ] ){ &#xA;     $$typeof : Symbol ( react.element ),&#xA;     type : &#39;div&#39;&#xA;     key : null ,&#xA;     props : { &#xA;        className : &#34; loggdata &#34;&#xA;        children : [ &#xA;              &#34; server logs 2120/11/06 &#34;&#xA;         ]&#xA;  } ,&#xA;     ref : null&#xA;}&gt;&gt;&#xA;&lt;div class=&#34; loggdata &#34;  style=&#34;color:red;font-size:23px;&#34; &gt; &#xA;      server logs 2120/11/06&#xA;&lt;/div&gt;&#xA;-------&#xA;React.createElement( &#39;div&#39; , { className : &#34;loggdata&#34; , style : { color : &#39;red&#39; , fontSize : &#39;23px&#39;  } } , [ &#39;server logs 2120/11/06  &#39;  ] )&#xA;-------&#xA;{ &#xA;     $$typeof : Symbol ( react.element ),&#xA;     type : &#39;div&#39;&#xA;     key : null ,&#xA;     props : { &#xA;        className : &#34; loggdata &#34;&#xA;        style  : { &#xA;            color : &#39;red&#39; ,&#xA;            fontSize : &#39;23px&#39; &#xA;         }&#xA;        children : [ &#xA;              &#34; server logs 2120/11/06 &#34;&#xA;         ]&#xA;  } ,&#xA;     ref : null&#xA;}&gt;&gt; المنت های تو هم (nested)&lt;div class=&#34; loggdata &#34;  style=&#34;color:red;font-size:23px;&#34; &gt; &#xA;      server logs 2120/11/06&#xA;      &lt;i&gt;Warning&lt;/i&gt;&#xA;&lt;/div&gt;&#xA;-----------&#xA;React.createElement( &#39;div&#39; , { className : &#34;loggdata&#34; , style : { color : &#39;red&#39; , fontSize : &#39;23px&#39;  } } , [ &#39;server logs 2120/11/06 &#39; , React.createElement ( &#39;i&#39; , { } , [ &#39;warning&#39; ] )  ] )&#xA;---------{&#xA;     $$typeof : Symbol ( react.element ),&#xA;     type : &#39;div&#39;&#xA;     key : null ,&#xA;     props : { &#xA;        className : &#34; loggdata &#34;&#xA;        style  : { &#xA;            color : &#39;red&#39; ,&#xA;            fontSize : &#39;23px&#39; &#xA;         }&#xA;        children : [ &#xA;              &#34; server logs 2120/11/06 &#34; ,&#xA;             { &#xA;                   $$typeof : Symbol ( react.element ),&#xA;                   type : &#39;i&#39;&#xA;                   key : null ,&#xA;                  props : { &#xA;                        className : &#34; loggdata &#34;&#xA;                        children : [ &#xA;                                  &#34; server logs 2120/11/06 &#34;&#xA;                        ]&#xA;                  ref : null&#xA;                } &#xA;         ]&#xA;}&#xA;         ]&#xA;  } ,&#xA;     ref : null&#xA;}خب با دقت به بالایی ها باید بفهمید چی به چیه این react element پس برای render یک المنت react ... به متد React.createElement باید type رو به عنوان اولین argument بدیم و شی از prop ها رو به دومین argument و لیستی از children ها رو به سومن argument که توی object -ِ المنت ریکت , children یکی از props هاست , دراصل توی ابجکت props میره ولی ما جدا به متود React.createElement پاسش دادیم.اگر توی argument دوم یعنی props بیایم کلید های ref و key رو تعریف کنیم react element دیگه مقدار کلیدهای key و ref رو برابر null نمیذاره مگر اینکه تعریف نکرده باشیمشون</description><category>lambdaxyzt</category><author>lambdaxyzt</author><pubDate>Fri, 22 Oct 2021 13:07:29 +0330</pubDate></item></channel></rss>