ReactJS (ری اکت جی اس) چیست؟

ری-اکت-جی-اس

ReactJS (ری اکت جی اس) چیست؟

ReactJS (ری اکت جی اس) چیست؟ 820 434 پرویز امامی

ری اکت جی اس (ReactJS) چیست؟

ری اکت جی اس یکی از کتابخانه‌های محبوب و پر استفاده و رایگان و متن باز ( Open Source ) جاوا اسکریپت ( JavaScript ) برای ساخت رابط کاربری وب سایت‌ها است. برنامه‌های React مقیاس پذیرتر و نگهداری از آن‌ها راحت‌تر است.

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

توسعه‌دهندگان ReactJS

ری‌ اکت توسط جردن واک (Jordan Walke) ، یک مهندس نرم‌افزار در فیس‌بوک، ساخته شده و  در سال ۲۰۱۳ به صورت رسمی اعلام شد. این کتابخانه توسط فیسبوک و اینستاگرام و گروهی از توسعه‌دهندگان و شرکت‌ها ( به دلیل متن باز بودن ) توسعه و نگه‌داری می‌شوند.

  1. اضافه کردن فایل جاوا اسکریپت ری اکت
    در این روش ٬ وب اپلیکیشن شما از قبل ساخته شده و فقط تصمیم به ویرایش بخش‌هایی از آن را دارید. این روش راحت‌تر است به این دلیل که با افزودن تگ اچ تی ام ال زیر به پروژه ری اکت می‌توانید شروع به کدنویسی کنید.
<script data-src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script> 
<script src="https://unpkg.com/react-dom@16/umd/react-dom.evelopment.js" crossorigin></script>
  1. ایجاد پروژه جدید ری اکت
    در این روش ٬ یک وب اپلیکیشن ری اکت را از پایه ایجاد و توسعه وب اپلیکیشن خود را شروع کنید. برای شروع شما باید node.js را بر روی سیستم خود نصب کنید. نصب Node.js وNPM  و NPX:نود جی اس را می‌توانید از این صفحه دانلود کنید و مراحل نصب را next بزنید تا بر روی کامپیوتر شما نصب شود. با نصب node ، npm و npx هم نصب خواهد شد. پس از نصب و راه‌اندازی نود جی اس ٬ ترمینال (CMD) را در پوشه‌ای که قصد ایجاد پروژه را دارید باز کرده و دستور زیر را وارد کنید :
npx create-react-app my-app

پکیج منیجر نود جی اس شروع به دریافت فایل‌های ری اکت کرده و یک پروژه ری اکت جدید را ایجاد می‌کند و کافی است به پوشه ساخته شده بروید و دستور npm start را در آن پوشه اجرا کنید. این دستور برنامه Node.js ای را اجرا می‌کند.

کامپوننت (Component)

کامپوننت‌ها برای تقسیم پروژه به قسمت‌های کوچک‌تر و مدیریت راحت‌تر آن ایجاد می‌شوند.  کامپوننت ها را می‌شود به صورت تو در تو استفاده کرد و به هر اندازه که می‌خواهید از آن‌ها درون یکدیگر استفاده کنید. برای نوشتن کامپوننت ۲ روش وجود دارد:

  • با استفاده از توابع جاوا اسکریپت :
function Welcome(props) {
 return <h1>Hello{props.name}</h1>;
 }

  • با استفاده از کلاس های ES6
class Welcome extends React.Component { 
render() {
 return <h1>Hello{this.props.name}</h1>;
 } }

استفاده از کامپوننت ساخته شده (Rendering a Component)

کامپوننت‌ها برای تقسیم پروژه به قسمت‌های کوچکتر و مدیریت راحت‌تر آن ایجاد می‌شوند. کامپوننت‌ها را می‌شود به صورت تو در تو استفاده کرد و به هر اندازه که می‌خواهید از آن‌ها درون یکدیگر استفاده کنید. برای نوشتن کامپوننت ۲ روش وجود دارد:

  • با استفاده از توابع جاوا اسکریپت :
function Welcome(props) {
  return <h1>Hello{props.name}</h1>;
}



const element = <Welcome name="Sara" />;
ReactDOM.render( element,  document.getElementById('root'));

خروجی این کد را می توانید از اینجا مشاهده کنید.

دسته بندی کامپوننت ها

کامپوننت‌ها را می‌توان به دو دسته کلی تقسیم بندی کرد:

 ۱-Stateful Components

این نوع از کامپوننت‌ها می‌توانند در حالت‌های مختلف خروجی‌های مختلفی تولید کنند. تفاوت این دو نوع کامپوننت در   state  است ، برای استفاده از state آن را در constructor کلاس تعریف کنیم.. هر لحظه state را بررسی و با تغییر آن تابع render مجددا فراخوانی می‌شود. درون constructor باید ()super فراخوانی کرد. کاراین تابع constructor کلاس پدر خود را فراخوانی می‌کند. اگر این کار را انجام ندهید برنامه خطا می‌دهد.

class ReactStatefulComponent extends React.Component { 
constructor() {
 super(); 
this.state = { 
data: [ {id":1,"name":"Ali","age":"20"},
 {"id":2,"name":"Reza","age":"30"},
 {"id":3,"name":"Maryam","age":"40"} 
] } } 
render() {
 return ( 
<div> 
<Header/>
 <table style={{width:'100%'}}> 
<tbody> 
{ this.state.data.map((person, i) => 
<tr> 
<td>{i}</td> 
<td>{person.id}</td>
 <td>{person.name}</td>
 <td>{person.age}</td> </tr>
 ) } 
</tbody> 
</table>
 </div> ); } } 
class Header extends React.Component {
 render() {
 return (
 <div>
 <h1>Header</h1>
 </div> 
); } } 
export default ReactStatefulComponent;

 

می‌خوای یه فروشگاه به وسعت اینترنت داشته باشی؟

ما حرفه‌ای‌ترین فروشگاه آنلاین رو برات طراحی می‌کنیم.

 ۲-Stateless Components

کامپوننت‌های بدون حالت(Stateless)، کامپوننت‌هایی استاتیک هستند که خروجی آن‌ها ثابت است و به حالت (state) خاصی بستگی ندارد.

import React from 'react';
 class ReactStatelessComponent extends React.Component {
 render() { 
 return (
 <div> 
      <Header/>
      <Content/> 
 </div>
   );
  }
 }

 class Header extends React.Component {
 render() { 
 return ( 
 <div>
 <h1>Header</h1>
 </div>
   );
  }
 } 
class Content extends React.Component {
 render() {
 return (
 <div> 
 <h2>Content</h2>
 <p>The content text!!!</p>
 </div> 
  );
 } 
}

 export default ReactStatelessComponent;














درمثال بالا مشاهده می‌کنید که ۳ کامپوننت مختلف نوشته شده است. هر سه این کامپوننت‌ها Stateless یا بدون حالت هستند. کامپوننت Header و Content یک تگی دارند. این دو کامپوننت را در ReactStatelessComponent در کنار یکدیگر قرار داده و استفاده کرده‌ایم. می‌توان ReactStatelessComponent  را در سایر فایل‌ها Import کرد و از آن استفاده کرد. در خروجی این کامپوننت همان چیزهایی که در تگ‌ها وجود دارد بدون تغییر نمایش داده می‌شود همانند زیر:

Header

Content

The Content text!!!

Props

Props‌ که ورودی‌های کامپوننت‌ها هستند، در واقع اطلاعاتی است که کامپوننت‌ها نیاز دارند و این اطلاعات را از طریق attribute ها به آن می‌دهیم. همانند کد پایین که در کامپوننت welcome ،props آرگومان ورودی این کامپوننتuser است. تفاوت بین Props  و State در این است که props قابلیت ویرایش ندارند و در واقع  Read-Only هستند.

function Welcome(props) { 
return <h1>Hello, { props.name}</h1>; 
} 
const element = <Welcome name="Sara" />; 
ReactDOM.render( element, document.getElementById('root') 
);

برای تغییرات this.state نباید آن را به صورت مستقیم مقداردهی کرد. برای مقداردهی مستقیم از تابعی به نام setState استفاده می‌کنیم.

 this.setState({react: 'The best website in the world'});

Component Life Cycle چرخه شروع کامپوننت

کامپوننت‌ها یک چرخه زمانی دارند و شامل متدهایی هستند که با رخ دادن اتفاقات مختلف فراخوانی می‌شوند.

componentWillMount

بعد از constructor متد componentWillMount هم سمت سرور هم کلاینت فراخوانی می‌شود. اصطلاح mount به معنی قرار گرفتن کامپوننت درون DOM می‌باشد این متد قبل از Mount شدن کامپوننت اجرا می‌شود. کارهایی که نیاز دارید قبل از قرار داده شدن کامپوننت درون DOM انجام شود در این متد باید انجام دهید.

componentDidMount

بعد از اولین رندر متد  componentDidMount تنها یک بار سمت سرویس گیرنده (client side) فراخوانی می‌شود، در این مکان است که درخواست‌های AJAX و   DOM  یا به روز رسانی state رخ می‌دهد. این متد برای یکپارچگی با فریمورک‌های جاوا اسکریپت و هر تابعی که اجرای آن با تأخیرهمراه است مانند setTimeout  و setInterval استفاده می‌شود.

componentWillReceiveProps

به محض این که props تغییرکرد قبل از رندرشدن فراخوانی می‌شود.

shouldComponentUpdate

در این متد باید یک boolean بازگشت داده شود. اگر که false برگرداند کامپوننت مجددا render نخواهد شد که باعث جلوگیری از render مجدد و در نتیجه بهبود کارایی برنامه خواهد شد.

componentWillUpdate

اگرکه نتیجه shouldComponentUpdate مقدار true باشد این متد فراخوانی می‌شود. اگر هم از shouldComponentUpdate استفاده نکنید این متد باز هم فراخوانی می‌شود. در این متد نیز باید کارهایی که می‌خواهیم قبل از render  مجدد اتفاق بیوفتد انجام می‌شود.

componentDidUpdate

این متد فقط یک بار پس از رندر مجدد کامپوننت فراخوانی می‌شود. این متد نیز مانند componentDidMount به صورت تضمینی یک بار در این چرخه اجرا می‌شود .

componentWillUnmount

 بعد از اینکه اجزای سازنده از DOM جدا شدن فراخوانی می‌شود. ما اجزای خود را در js.main  از DOM جدا می‌کنیم.

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

این مقاله مفید بود ؟
چرا از این پست راضی نبودید ؟
تصویر کپچا

Subscribe for free resources and news updates.