شما می دانید که انتخاب یک زبان یا چارچوب جدید چگونه است. گاهی اوقات اسناد عالی وجود دارد که به شما کمک می کند راه خود را از طریق آن پیدا کنید. اما حتی بهترین مستندات مطلقاً همه چیز را پوشش نمی دهد. و وقتی با چیزی جدید کار می کنید، مطمئناً مشکلی را پیدا می کنید که راه حل مکتوب ندارد.
اولین باری که یک پروژه React ایجاد کردم برای من اینطور بود - و React یکی از آن چارچوبهایی است که اسناد قابل توجهی دارد، به خصوص اکنون با اسناد بتا. اما من هنوز در مسیر خود به سختی تلاش کردم. مدت زیادی از آن پروژه می گذرد، اما درس هایی که از آن گرفتم هنوز در ذهنم تازه است. و حتی اگر تعداد زیادی آموزش "چگونه" React وجود دارد، فکر کردم آنچه را که دوست داشتم در اولین استفاده از آن بدانم به اشتراک بگذارم.
بنابراین، این همان چیزی است که این مقاله دارد - لیستی از اشتباهات اولیه که من مرتکب شدم. امیدوارم آنها به شما کمک کنند تا یادگیری React را برای شما آسانتر کند.
استفاده از create-react-app برای شروع پروژه
TL;DR از Vite یا Parcel استفاده کنید.
ایجاد برنامه React (CRA) ابزاری است که به شما کمک می کند یک پروژه React جدید راه اندازی کنید. این یک محیط توسعه با بهترین گزینه های پیکربندی برای اکثر پروژه های React ایجاد می کند. این بدان معنی است که شما مجبور نیستید زمان خود را برای پیکربندی چیزی صرف کنید.
به عنوان یک مبتدی، این یک راه عالی برای شروع کار من به نظر می رسید! بدون پیکربندی! فقط شروع به کدنویسی کنید!
CRA از دو بسته محبوب برای رسیدن به این هدف استفاده می کند، وب پک و بابل. webpack یک بسته بندی وب است که تمام دارایی های پروژه شما مانند جاوا اسکریپت، CSS و تصاویر را بهینه می کند. Babel ابزاری است که به شما امکان می دهد از ویژگی های جدیدتر جاوا اسکریپت استفاده کنید، حتی اگر برخی از مرورگرها از آنها پشتیبانی نکنند.
هر دو خوب هستند، اما ابزارهای جدیدتری وجود دارند که می توانند این کار را به طور خاص بهتر انجام دهند سریعا و کامپایلر وب سریع (SWC).
این جایگزینهای جدید و بهبودیافته سریعتر و آسانتر از webpack و Babel پیکربندی میشوند. این کار تنظیم پیکربندی را آسانتر میکند که انجام آن در برنامه create-react-app بدون خارج کردن دشوار است.
برای استفاده از هر دوی آنها هنگام راهاندازی یک پروژه React جدید، باید مطمئن شوید که دارید گره نسخه 12 یا بالاتر نصب شده است، سپس دستور زیر را اجرا کنید.
npm create vite
از شما خواسته می شود نامی برای پروژه خود انتخاب کنید. پس از انجام این کار، React را از لیست فریمورک ها انتخاب کنید. پس از آن، می توانید یکی را انتخاب کنید Javascript + SWC
or Typescript + SWC
سپس باید دایرکتوری را تغییر دهید cd
وارد پروژه خود شوید و دستور زیر را اجرا کنید.
npm i && npm run dev
این باید یک سرور توسعه برای سایت شما با URL اجرا کند localhost:5173
و به همین سادگی است.
defaultProps
برای مقادیر پیش فرض
با استفاده از TL;DR به جای آن از پارامترهای تابع پیش فرض استفاده کنید.
داده ها را می توان از طریق چیزی به نام به اجزای React منتقل کرد props
. اینها درست مانند ویژگیهای یک عنصر HTML به یک مؤلفه اضافه میشوند و میتوانند با گرفتن مقادیر مربوطه از شی prop ارسال شده به عنوان آرگومان در تعریف مؤلفه استفاده شوند.
// App.jsx
export default function App() { return <Card title="Hello" description="world" />
} // Card.jsx
function Card(props) { return ( <div> <h1>{props.title}</h1> <p>{props.description}</p> </div> );
} export default Card;
اگر یک مقدار پیش فرض برای a مورد نیاز باشد prop
از defaultProp
اموال قابل استفاده است:
// Card.jsx
function Card(props) { // ...
} Card.defaultProps = { title: 'Default title', description: 'Desc',
}; export default Card;
با جاوا اسکریپت مدرن، امکان تخریب ساختار وجود دارد props
شیء کنید و یک مقدار پیش فرض به همه آن در آرگومان تابع اختصاص دهید.
// Card.jsx
function Card({title = "Default title", description= "Desc"}) { return ( <div> <h1>{title}</h1> <p>{description}</p> </div> )
} export default Card;
این به عنوان کدی که می تواند توسط مرورگرهای مدرن بدون نیاز به تبدیل اضافی خوانده شود، مطلوب تر است.
متاسفانه، defaultProps
به دلیل اینکه JSX (جاوا اسکریپت XML) خارج از جعبه پشتیبانی نمی شود، نیاز به تغییری برای خواندن توسط مرورگر دارد. این به طور بالقوه می تواند بر عملکرد برنامه ای که از مقدار زیادی از آن استفاده می کند تأثیر بگذارد defaultProps
.
propTypes
استفاده نکنید TL;DR از TypeScript استفاده کنید.
در React، propTypes
از ویژگی میتوان برای بررسی اینکه آیا یک مؤلفه نوع داده صحیح را برای اجزای آن ارسال میکند یا خیر، استفاده کرد. آنها به شما این امکان را می دهند که نوع داده ای را که باید برای هر پایه استفاده شود، مانند رشته، عدد، شی و غیره مشخص کنید. همچنین به شما اجازه می دهند مشخص کنید که آیا یک پروپ مورد نیاز است یا خیر.
به این ترتیب، اگر یک کامپوننت با نوع داده اشتباه ارسال شود یا اگر یک پایه مورد نیاز ارائه نشده باشد، React یک خطا ایجاد می کند.
// Card.jsx
import { PropTypes } from "prop-types"; function Card(props) { // ...
} Card.propTypes = { title: PropTypes.string.isRequired, description: PropTypes.string,
}; export default Card;
TypeScript سطحی از ایمنی نوع را در داده هایی که به اجزا ارسال می شود، ارائه می دهد. خیلی مطمئن، propTypes
زمانی که شروع کردم ایده خوبی بود. با این حال، اکنون که TypeScript به راه حلی برای ایمنی نوع تبدیل شده است، من به شدت استفاده از آن را بیش از هر چیز دیگری توصیه می کنم.
// Card.tsx
interface CardProps { title: string, description?: string,
} export default function Card(props: CardProps) { // ...
}
TypeScript یک زبان برنامه نویسی است که بر روی جاوا اسکریپت با افزودن چک کردن نوع استاتیک ایجاد می شود. TypeScript سیستم نوع قدرتمندتری را ارائه می دهد که می تواند باگ های بالقوه بیشتری را شناسایی کند و تجربه توسعه را بهبود بخشد.
استفاده از اجزای کلاس
TL;DR: اجزاء را به عنوان توابع بنویسید
اجزای کلاس در React با استفاده از کلاس های جاوا اسکریپت ایجاد می شوند. آنها ساختار شی گراتر و همچنین چند ویژگی اضافی مانند توانایی استفاده از آن دارند this
روش های کلیدواژه و چرخه حیات
// Card.jsx
class Card extends React.Component { render() { return ( <div> <h1>{this.props.title}</h1> <p>{this.props.description}</p> </div> ) }
} export default Card;
من نوشتن کامپوننتهای با کلاس را به توابع ترجیح میدهم، اما درک کلاسهای جاوا اسکریپت برای مبتدیان دشوارتر است. this
می تواند بسیار گیج کننده شود درعوض، نوشتن کامپوننت ها به عنوان توابع را توصیه می کنم:
// Card.jsx
function Card(props) { return ( <div> <h1>{props.title}</h1> <p>{props.description}</p> </div> )
} export default Card;
اجزای تابع به سادگی توابع جاوا اسکریپت هستند که JSX را برمی گرداند. خواندن آنها بسیار ساده تر است و ویژگی های اضافی مانند آن ندارند this
کلمه کلیدی و روشهای چرخه عمر که عملکرد آنها را از اجزای کلاس بیشتر می کند.
اجزای تابعی نیز مزیت استفاده از قلاب را دارند. واکنش به قلاب ها به شما این امکان را می دهد که از حالت و سایر ویژگی های React بدون نوشتن یک جزء کلاس استفاده کنید و کد شما را خواناتر، قابل نگهداری و قابل استفاده مجدد می کند.
وارد کردن React غیر ضروری
TL;DR: نیازی به انجام آن نیست، مگر اینکه به قلاب نیاز داشته باشید.
از آنجایی که React 17 در سال 2020 منتشر شد، هر زمان که یک کامپوننت ایجاد می کنید، دیگر نیازی به وارد کردن React در بالای فایل شما نیست.
import React from 'react'; // Not needed!
export default function Card() {}
اما ما مجبور بودیم این کار را قبل از React 17 انجام دهیم زیرا ترانسفورماتور JSX (چیزی که JSX را به جاوا اسکریپت معمولی تبدیل می کند) از روشی به نام استفاده می کرد. React.createElement
این فقط هنگام وارد کردن React کار می کند. از آن زمان، یک ترانسفورماتور جدید منتشر شده است که می تواند JSX را بدون آن تبدیل کند createElement
روش.
برای استفاده از هوک ها همچنان باید React را وارد کنید. قطعهو هر توابع یا مؤلفه دیگری که ممکن است از کتابخانه نیاز داشته باشید:
import { useState } from 'react'; export default function Card() { const [count, setCount] = useState(0); // ...
}
این اشتباهات اولیه من بود!
شاید «اشتباه» کلمه بسیار سختی باشد زیرا برخی از شیوه های بهتر بعداً به وجود آمدند. با این حال، من موارد زیادی را می بینم که روش "قدیمی" انجام کاری هنوز به طور فعال در پروژه ها و سایر آموزش ها استفاده می شود.
صادقانه بگویم، احتمالاً هنگام شروع کار بیش از پنج اشتباه مرتکب شدم. هر زمان که به ابزار جدیدی دست پیدا کنید، به جای چرخاندن سوئیچ، بیشتر شبیه یک سفر یادگیری برای استفاده موثر از آن است. اما اینها چیزهایی هستند که من هنوز بعد از سالها با خودم حمل می کنم!
اگر مدتی است که از React استفاده می کنید، چه چیزهایی را دوست داشتید قبل از شروع کار می دانستید؟ بسیار عالی خواهد بود که مجموعه ای را به دست آوریم تا به دیگران کمک کند تا از مشکلات مشابه جلوگیری کنند.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- منبع: https://css-tricks.com/5-mistakes-starting-react/
- :است
- $UP
- 1
- 11
- 2020
- 7
- 8
- 9
- 98
- a
- توانایی
- درباره ما
- کاملا
- رسیدن
- فعالانه
- اضافه
- اضافی
- مزیت - فایده - سود - منفعت
- اثر
- پس از
- معرفی
- اجازه می دهد تا
- جایگزین
- و
- نرم افزار
- کاربرد
- هستند
- استدلال
- مقاله
- AS
- دارایی
- At
- خواص
- هرج و مرج
- به عقب
- BE
- زیرا
- شدن
- قبل از
- مبتدی
- مبتدی ها
- بودن
- بهترین
- بتا
- بهتر
- کران
- جعبه
- مرورگر
- مرورگرهای
- اشکالات
- می سازد
- by
- نام
- CAN
- می توانید دریافت کنید
- کارت
- حمل
- کشتی
- تغییر دادن
- بررسی
- کلاس
- کلاس ها
- رمز
- مجموعه
- جزء
- اجزاء
- پیکر بندی
- گیج کننده
- میتوانست
- پوشش
- سازمان تنظیم مقررات
- ایجاد
- ایجاد شده
- ایجاد
- CSS
- داده ها
- به طور پیش فرض
- شرح
- برنامه نویس
- پروژه
- مشکل
- مستندات
- نمی کند
- عمل
- آیا
- هر
- در اوایل
- آسان تر
- به طور موثر
- هر دو
- عنصر
- محیط
- خطا
- به خصوص
- و غیره
- حتی
- تا کنون
- همه چیز
- تجربه
- صادرات
- اضافی
- سریعتر
- امکانات
- کمی از
- پرونده
- پیدا کردن
- نام خانوادگی
- بار اول
- پیروی
- برای
- چارچوب
- چارچوب
- تازه
- از جانب
- تابع
- توابع
- دریافت کنید
- گرفتن
- رفتن
- خوب
- بزرگ
- آیا
- کمک
- کمک می کند
- بالاتر
- خیلی
- قلاب
- امید
- چگونه
- اما
- HTML
- HTTPS
- i
- اندیشه
- تصاویر
- واردات
- واردات
- بهبود یافته
- in
- نصب شده
- در عوض
- رابط
- IT
- ITS
- جاوا اسکریپت
- کار
- سفر
- دانستن
- زبان
- یادگیری
- درس
- سطح
- کتابخانه
- wifecycwe
- پسندیدن
- فهرست
- خیلی
- ساخته
- قابل نگهداری
- ساخت
- باعث می شود
- ساخت
- به معنی
- روش
- روش
- قدرت
- ذهن
- اشتباهات
- مدرن
- بیش
- اکثر
- نام
- نیاز
- جدید
- عدد
- هدف
- of
- on
- ONE
- بهینه سازی می کند
- گزینه
- دیگر
- دیگران
- بسته
- پارامترهای
- گذشت
- کارایی
- انتخاب کنید
- افلاطون
- هوش داده افلاطون
- PlatoData
- بسیاری
- محبوب
- ممکن
- پتانسیل
- بالقوه
- قوی
- شیوه های
- ترجیح می دهند
- شاید
- مشکل
- برنامه نويسي
- پروژه
- پروژه ها
- ویژگی
- ارائه
- فراهم می کند
- نسبتا
- رسیدن به
- واکنش نشان می دهند
- خواندن
- توصیه
- منظم
- آزاد
- منتشر شد
- مربوط
- قابل توجه
- نیاز
- ضروری
- برگشت
- قابل استفاده مجدد
- دویدن
- ایمنی
- همان
- به نظر می رسید
- تنظیم
- محیط
- اشتراک گذاری
- باید
- ساده
- به سادگی
- پس از
- سایت
- صاف تر
- So
- راه حل
- برخی از
- چیزی
- به طور خاص
- خرج کردن
- شروع
- آغاز شده
- راه افتادن
- دولت
- هنوز
- ساختار
- مبارزات
- چنین
- پشتیبانی
- پشتیبانی
- گزینه
- سیستم
- مصرف
- پایانه
- که
- La
- آنها
- اینها
- چیز
- اشیاء
- فکر
- از طریق
- زمان
- عنوان
- به
- هم
- ابزار
- ابزار
- بالا
- دگرگون کردن
- دگرگونی
- درست
- آموزش
- حروفچینی
- فهمیدن
- URL
- استفاده کنید
- ارزش
- ارزشها
- نسخه
- مسیر..
- وب
- صفحه وب
- خوب
- چی
- که
- در حین
- اراده
- با
- بدون
- کلمه
- مهاجرت کاری
- جهان
- خواهد بود
- نوشتن
- نوشته
- کتبی
- اشتباه
- XML
- سال
- شما
- شما
- خودت
- زفیرنت