React کاربردهای زیادی دارد، اما در ابتدا می توان با آن مقابله کرد. همه چیز در مورد شیوه های کلیدی که ارزش دنبال کردن دارند را بخوانید. روش استفاده از React را در ادامه بخوانید.
React یکی از محبوب ترین فریم ورک های فرانت اند برای جاوا اسکریپت است. برخلاف سایر فریمورکها مانند Angular، بسیار بینظر است. بنابراین، این شما هستید که تصمیم می گیرید چگونه می خواهید کد React خود را بنویسید یا ساختار دهید.
1. استفاده از اجزای کاربردی و قلاب ها به جای کلاس ها
در React میتوانید از کامپوننتهای کلاس یا تابعی با هوک استفاده کنید. با این حال، شما باید از اجزای کاربردی و قلابها بیشتر استفاده کنید، زیرا در مقایسه با کلاسها، کدهای مختصر و خواناتری دارند.
جزء کلاس زیر را در نظر بگیرید که داده های API ناسا را نمایش می دهد.
class NasaData extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentDidMount() {
fetch("https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY")
.then((res) => res.json())
.then((json) => {
this.setState({
data: json,
});
});
}
render() {
const { data } = this.state;
if (!data.length)
return (
<div>
<h1> Fetching data.... </h1>{" "}
</div>
);
return (
<>
<h1> Fetch data using Class component </h1>{" "}
{data.map((item) => (
<div key={item.id}>{item.title}</div>
))}
</>
);
}
}
می توانید همان جزء را با استفاده از قلاب ها بنویسید:
const NasaData = () => {
const [data, setdata] = useState(null);
useEffect(() => {
fetch("https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY")
.then((res) => res.json())
.then((json) => {
setdata(json);
});
}, [data]);
return (
<>
<h1> Fetch data using Class component </h1>{" "}
{data.map((item) => (
<div key={item.id}>{item.title}</div>
))}
</>
);
};
حتی اگر بلوک کد بالا همان کار مولفه کلاس را انجام می دهد، پیچیدگی کمتری، حداقلی و درک آن آسان است.
2. اجتناب از استفاده از حالت (در صورت امکان)
React State دادهها را ردیابی میکند که در صورت تغییر، مؤلفه React را برای رندر مجدد فعال میکند. هنگام ساخت برنامههای React، تا حد امکان از استفاده از حالت خودداری کنید، زیرا هر چه بیشتر از حالت استفاده کنید، دادههای بیشتری را باید در برنامه خود پیگیری کنید.
یکی از راه های به حداقل رساندن استفاده از حالت، اعلام آن تنها در صورت لزوم است. به عنوان مثال، اگر دادههای کاربر را از یک API واکشی میکنید، به جای ذخیره خصوصیات فردی، کل شی کاربر را در حالت ذخیره کنید.
به جای انجام این کار:
const [username, setusername] = useState('')
const [password, setpassword] = useState('')
این کار را انجام دهید:
const [user, setuser] = useState({})
3. فایل های مربوط به یک جزء را در یک پوشه سازماندهی کنید
هنگام تصمیم گیری در مورد ساختار پوشه برای برنامه React خود، به سراغ یک ساختار کامپوننت محور بروید. این به معنای ذخیره تمام فایل های مربوط به یک جزء در یک پوشه است.
برای مثال، اگر یک جزء Navbar ایجاد میکنید، پوشهای به نام Navbar حاوی فایل مؤلفه، برگه سبک و سایر فایلهای جاوا اسکریپت و دارایی مورد استفاده در مؤلفه ایجاد کنید.
یک پوشه واحد حاوی تمام فایل های یک جزء، استفاده مجدد، اشتراک گذاری و اشکال زدایی را آسان می کند. اگر نیاز دارید که ببینید یک جزء چگونه کار می کند، فقط باید یک پوشه را باز کنید.
سایر بهترین روش های پوشه React عبارتند از:
از فایل های فهرست برای انتزاع جزئیات پیاده سازی فایل کامپوننت خود استفاده کنید. با در نظر گرفتن مثال Navbar، یک پوشه Navbar ایجاد کنید و در این پوشه یک فایل جزء به نام فایل index.js (یا .ts) اضافه کنید.
اجزای قابل استفاده مجدد را در یک پوشه جداگانه نگه دارید. اگر کامپوننت هایی دارید که بیش از یک قسمت از برنامه شما از آنها استفاده می کند، آنها را در پوشه ای به نام components نگهداری کنید. این به شما کمک می کند تا آنها را به راحتی پیدا کنید.
توابع ابزار را در یک پوشه جداگانه مانند پوشه lib یا helpers نگه دارید. این کار مدیریت و استفاده مجدد از این توابع را در آینده آسان تر می کند.
4. از استفاده از شاخص ها به عنوان ابزار کلیدی خودداری کنید
React از کلیدها برای شناسایی منحصر به فرد آیتم ها در یک آرایه استفاده می کند. با کلیدها، React می تواند مشخص کند که کدام آیتم تغییر، اضافه یا از آرایه حذف شده است.
هنگام رندر کردن آرایه ها، ممکن است از ایندکس به عنوان کلید استفاده کنید.
const Items = () => {
const arr = ["item1", "item2", "item3", "item4", "item5"];
return (
<>
{arr.map((elem, index) => {
<li key={index}>{elem}</li>;
})}
</>
);
};
در حالی که این گاهی اوقات کار می کند، استفاده از شاخص به عنوان یک کلید می تواند مشکلاتی را ایجاد کند، به خصوص اگر انتظار می رود لیست تغییر کند. این لیست را در نظر بگیرید.
const arr = ["item1", "item2", "item3", "item4", "item5"];
در حال حاضر، اولین مورد لیست، “Item1” در شاخص صفر است، اما اگر آیتم دیگری را در ابتدای لیست اضافه کنید، شاخص “Item1” به 1 تغییر می کند که رفتار آرایه شما را تغییر می دهد.
راه حل این است که از یک مقدار منحصر به فرد به عنوان شاخص برای اطمینان از حفظ هویت آیتم لیست استفاده کنید.
5. در صورت امکان به جای Divs، Fragments را انتخاب کنید
اجزای React باید کد پیچیده شده در یک تگ را برگردانند که معمولاً یک
یا یک قطعه React است. در صورت امکان باید قطعات را انتخاب کنید.
استفاده از
باعث افزایش اندازه DOM میشود، به خصوص در پروژههای بزرگ، زیرا هر چه تعداد تگها یا گرههای DOM بیشتر باشد، وبسایت شما به حافظه بیشتری نیاز دارد و مرورگر قدرت بیشتری برای بارگذاری وبسایت شما مصرف میکند. این منجر به کاهش سرعت صفحه و تجربه کاربری ضعیف بالقوه می شود.
یکی از نمونه های حذف تگ های
غیر ضروری، عدم استفاده از آنها هنگام برگرداندن یک عنصر واحد است.
const Button = () => {
return <button>Display</button>;
};
6. از قراردادهای نامگذاری پیروی کنید
همیشه باید از PascalCase هنگام نامگذاری کامپوننت ها استفاده کنید تا آنها را از سایر فایل های JSX غیر مولفه متمایز کنید. به عنوان مثال: TextField، NavMenu، و SuccessButton.
از camelCase برای توابع اعلام شده در اجزای React مانند handleInput() یا showElement() استفاده کنید.
7. از کدهای تکراری خودداری کنید
اگر متوجه شدید که در حال نوشتن کد تکراری هستید، آن را به اجزایی تبدیل کنید که قابل استفاده مجدد باشد.
به عنوان مثال، ایجاد یک مؤلفه برای منوی ناوبری به جای نوشتن مکرر کد در هر مؤلفه ای که به منو نیاز دارد، منطقی تر است.
این مزیت معماری مبتنی بر کامپوننت است. شما می توانید پروژه خود را به اجزای کوچکی تقسیم کنید که می توانید مجدداً در برنامه خود از آنها استفاده کنید.
8. از Object Destructuring برای Props استفاده کنید
به جای ارسال شی props، از شیء تخریبی برای ارسال نام props استفاده کنید. این امر نیاز به مراجعه به شی props را هر بار که نیاز به استفاده از آن دارید، کنار میگذارد.
برای مثال، کامپوننتی که در زیر آمده است، از props همانطور که هست استفاده می کند.
const Button = (props) => {
return <button>{props.text}</button>;
};
با تخریب شی، مستقیماً به متن مراجعه می کنید.
const Button = ({text}) => {
return <button>{text}</button>;
};
9. آرایه ها را با استفاده از نقشه به صورت پویا رندر کنید
از map() برای نمایش پویا بلوک های HTML مکرر استفاده کنید. برای مثال، میتوانید از map() برای ارائه فهرستی از آیتمها در تگهای
استفاده کنید.
const Items = () => {
const arr = [“item1”, “item2”, “item3”, “item4”, “item5”];
return (
<>
{arr.map((elem, index) => {
<li key={elem+index}>{elem}</li>;
})}
</>
);
};
برای مقاصد مقایسه، در اینجا نحوه ارائه لیست بدون map() آورده شده است. این رویکرد بسیار تکراری است.
const List = () => {
return (
<ul>
<li>Item1</li>
<li>Item2</li>
<li>Item3</li>
<li>Item4</li>
<li>Item5</li>
</ul>
);
};
10. برای هر کامپوننت React تست بنویسید
برای اجزایی که ایجاد می کنید تست بنویسید زیرا احتمال خطا را کاهش می دهد. آزمایش تضمین میکند که اجزا همانطور که انتظار دارید رفتار میکنند. یکی از رایج ترین فریم ورک های تست برای React، Jest است و محیطی را فراهم می کند که بتوانید آزمایش های خود را در آن اجرا کنید.
React یک ابزار قدرتمند است، اما شما باید از روشهای خاصی پیروی کنید
اگرچه React در نحوه استفاده از آن بسیار انعطافپذیر است، اما پیروی از روشهای خاص به شما کمک میکند تا از تجربه خود بیشترین بهره را ببرید.
هنگام پیروی از این نکات، پروژه و اهداف خاص خود را در ذهن داشته باشید زیرا بهترین شیوه های مختلف React ممکن است در زمینه های مختلف مرتبط تر باشد. به عنوان مثال، یک پروژه با یک تیم کوچک و دامنه محدود ممکن است به همان سطح سازماندهی پوشه نیاز نداشته باشد که یک پروژه بزرگ با چندین تیم با هم کار می کنند.