تیشرت Laravel
خرید
اطلاعات بیشتر
تیشرت اختصاصی برنامه نویس ها
خرید
اطلاعات بیشتر

آشنایی با مفهوم ها و نصب ساده React.js

آموزش فریم ورک محبوب React.js موضوع این مقاله است. البته قبلا هم آموزش هایی در این مورد داشتیم که می توانید اینجا آنها را ببینید.

قبل از شروع آموزش React.js نیاز است با بعضی از مفهوم های موجود در آن آشنا شویم تا بتوانیم چیزهای با معنی و زیبایی توسط ری اکت بسازیم.

React چیست؟

React یک کتابخانه UI است که در فیس بوک توسعه داده شده است تا به ایجاد اجزای رابط کاربری تعاملی و قابل استفاده مجدد کمک کند.React توسط فیس بوک به صورت کاربردی استفاده شده است و برای مثال کل وب سایت Instagram توسط React توسعه داده شده است(اپلیکیشن instagram هم توسط React Native توسعه یافته است).

یکی از نقاط قوت react این است که در می تواند سمت سرور نیز کار کند.همچنین یکی از مهمترین ویژگی های آن قابلیتی بنام Virtual DOM می باشد. در react نیز مثل رقبایش مثل Vue.js یا Angular می توان بخش های مختلف صفحه را داخل کامپوننت هایی قرار داد و بدین ترتیب علاوه بر سازماندهی بهتر سایت، از آنها در جاهای مختلف استفاده مجدد کرد.

قابلیت Virtual DOM چطور کار می کند؟

همانطور که می دانید سرعت تغییر DOM کند است.Virtual DOM همیشه یک کپی از DOM اصلی را در خود نگه می دارد تا موقع آپدیت بخشی از DOM ، نیازی به تغییر همه بخش ها نباشد و فقط بخشی که دست خوش تغییر شده است در DOM اصلی تغییر کند که این کار باعث افزایش سرعت آن شده است.

در واقع هنگامی که نیاز به آپدیت بخشی از DOM باشد ، react الگوریتم Diffing را اجرا می کند و تفاوت های بین DOM مجازی خودش و DOM اصلی را می فهمد و سپس فقط آن تفاوت ها را به DOM اصلی می فرستد.

در همین رابطه :   چگونه هر سه فریم ورک Angular2, React و Vue.js را در 1 ساعت نصب و امتحان کنیم؟

شروع کنیم

برای شروع react، ابزار React CLI Tool را نصب کنید و بعد دستورات زیر را در خط فرمان ویندوز یا ترمینال لینوکس اجرا کنید تا برنامه جدید react برایتان نصب شود:

# Install the CLI tool
npm install -g create-react-app

# Create an app
create-react-app my-app-name

# Install Dependencies
cd my-app-name
npm install

همچنین می توانید از این JSFiddle فورک کنید:

React JSFiddle

تنظیم صفحه

شما باید react.js و react-dom.js و همچنین کامپایلر Babel را وارد صفحه کنید. بعد کامپوننت خود را داخل تگ script که خصیصه type آن مساوی text/babel باشد بنویسید:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://unpkg.com/react@latest/dist/react.js"></script>
<script src="https://unpkg.com/react-dom@latest/dist/react-dom.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="myDiv"></div>
<script type="text/babel">

<!-- React Code Goes Here -->

</script>
</body>
</html>

در react، هر کامپوننت به یک تگ HTML متصل می شود، پس در این مثال می توانیم از myDiv به عنوان نگهدارنده آن استفاده کنیم.

البته روش بالا شاید آسان ترین راه شروع یادگیری react باشد ولی استفاده از Browserify یا Webpack برای مجزا کردن کامپوننت ها در فایل های مجزا روش بهتری خواهد بود.

مقدمات

اجزای اولیه react همان کامپوننت ها هستند. یکی مثل این:

<script type="text/jsx">
/** @jsx React.DOM */
React.render(
<h1>Hello, world!</h1>,
document.getElementById('myDiv')
);
</script>

اگر قبلا یکی از این کدها ندیده باشید احتمالا از دیدن JavaScript و HTML کنار هم متعجب شده اید.

JSX

اسم این زبان که در بالا دیدید JSX است.با JSX می توانید تگ های مشابه HTML را داخل جاوا اسکریپت بنویسید. به این علت گفتم مشابه HTML چون واقعا تگ های HTML نیستند و در واقع آبجکت های نمایشی مبتنی بر XML هستند.

شما از اکثر خصیصه هایی که برای HTML استفاده می کردید می توانید اینجا نیز استفاده کنید به جز بعضی ها مثل class که در jsx باید با className جایگزین شود و یا خصیصه for باید htmlFor نوشته شود.علت این کار رزرو بودن این کلمات در خود JavaScript است . تفاوت های دیگر را می توانید اینجا مطالعه کنید.

در همین رابطه :   چگونه: در 10 دقیقه یک وبلاگ با React و Gatsby بسازیم؟ (بخش اول)

 

کامپوننت ها

برای دیدن نتایج خروجی کامپوننت باید از دستور render استفاده کنیم.آرگومان اول این متد همان کامپوننتی است که می خواهیم رندر کنیم و آرگومان دوم تگی است که محتویات باید داخل آن قرار گیرند. برای ایجاد کلاس های سفارشی کامپوننت می توانید از متد createClass استفاده کنید. مثل این:

var MyComponent = React.createClass({
render: function(){
return (
<h1>Hello, world!</h1>
);
}
});

بعد از ایجاد کلاس می توانیم آن را به صورت زیر داخل صفحه ببینیم:

React.render(
<MyComponent/>,
document.getElementById('myDiv')
);

دقت کنید که تگی با id مقدار myDiv در صفحه باشد.

Props

وقتی می خواهیم از کامپوننت هایی که تعریف کرده ایم استفاده کنیم، می توانیم خصیصه هایی بنام props به آن اضافه کنیم. این خصیصه ها را می توان داخل کامپوننت با this.props خواند و وسیله ای برای فرستادن اطلاعات داینامیک به داخل کامپوننت هستند:

var MyComponent = React.createClass({
render: function(){
return (
<h1>Hello, {this.props.name}!</h1>
);
}
})

;

React.render(<MyComponent name=”Handsome” />, document.getElementById(‘myDiv’));

مشخصات، چرخه عمر و حالت

متد render تنها نیازمندی ما برای رندر و دیدن یک کامپوننت در صفحه است.ولی متدهای دیگری هم وجود دارند که بعضی مواقع می توانند مفید باشند.

متدهای lifecycle (چرخه زندگی)

برخی از متدهایی که باید بشناسید:

  • componentWillMount – فقط یکبار قبل از رندر در سمت کاربر و سرور اجرا می شود.
  • componentDidMount – فقط یکبار در سمت کاربر و بعد از رندر اجرا می شود.
  • shouldComponentUpdate – مقداری که مشخص می کند کدام کامپوننت باید آپدیت شود بر می گرداند.
  • componentWillUnmount – قبل از unmount کامپوننت اجرا می شود.

 

مشخصات

  • getInitialState – مقدار اولیه state را بر می گرداند.
  • getDefaultProps – اگر props ها موجود نباشند ، مقدار پیش فرض شان را مشخص می کند.
  • mixins – آرایه ای از اشیا که قابلیت های فعلی کامپوننت را گسترش می دهند.
در همین رابطه :   چگونه: در ۱۰ دقیقه یک وبلاگ با React و Gatsby بسازیم؟ (بخش دوم)

 

State

هر کامپوننتی یک شی state و یک شی props دارد.state توسط متد setState تنظیم می شود.فراخوانی setState باعث بروزرسانی رابط کاربری هم می شود.اگر بخواهید یک state ابتدایی قبل از اینکه هر واکنشی رخ دهد تنظیم کنید می توانید از متد getInitialState استفاده کنید. پایین نمونه آن را می بینید:

var MyComponent = React.createClass({
getInitialState: function(){
return {
count: 5
}
},
render: function(){
return (
<h1>{this.state.count}</h1>
)
}
});

رویدادها

react همچنین یک سیستم رویدادهای جامع دارد. رویدادها به عنوان خصیصه های کامپوننت ها اضافه می شوند و می توانند متدها را صدا بزنند. یک نمونه برای افزایش یک رقم را در زیر می بینید:

/** @jsx React.DOM */

var Counter = React.createClass({
incrementCount: function(){
this.setState({
count: this.state.count + 1
});
},
getInitialState: function(){
return {
count: 0
}
},
render: function(){
return (
<div class="my-component">
<h1>Count: {this.state.count}</h1>
<button type="button" onClick={this.incrementCount}>Increment</button>
</div>
);
}
});

React.render(<Counter/>, document.getElementById('myDiv'));

این پن را ببینید.

جریان داده یک طرفه

در react جریان داده های برنامه بوسیله اشیا state و props یک طرفه است بر خلاف جریان دو طرفه مثل Angular. پس در یک سلسله مراتب با کامپوننت های تو در تو، کامپوننت والد باید state را مدیریت کرده و آن را به فرزندان پایین تر خود بوسیله props پاس دهد.

state شما باید بوسیله setState بروزرسانی شود تا از ریفرش UI مطمئن شوید.

برای دیدن این مفهوم کد زیر را ببینید:

/** @jsx React.DOM */

var FilteredList = React.createClass({
filterList: function(event){
var updatedList = this.state.initialItems;
updatedList = updatedList.filter(function(item){
return item.toLowerCase().search(
event.target.value.toLowerCase()) !== -1;
});
this.setState({items: updatedList});
},
getInitialState: function(){
return {
initialItems: [
"Apples",
"Broccoli",
"Chicken",
"Duck",
"Eggs",
"Fish",
"Granola",
"Hash Browns"
],
items: []
}
},
componentWillMount: function(){
this.setState({items: this.state.initialItems})
},
render: function(){
return (
<div className="filter-list">
<input type="text" placeholder="Search" onChange={this.filterList}/>
<List items={this.state.items}/>
</div>
);
}
});

var List = React.createClass({
render: function(){
return (
<ul>
{
this.props.items.map(function(item) {
return <li key={item}>{item}</li>
})
}
</ul>
)
}
});

React.render(<FilteredList/>, document.getElementById('myDiv'));

این پن را ببینید.

در پایان

حالا که بعضی از مقدمات React را مرور کردیم بهتر از وقت بگذارید و React API و کمی JSX را مطالعه کنید.

در مقالات بعدی سعی می کنیم بیشتر وارد React شویم و نحوه رندر سمت سرور و سمت کاربر را یاد بگیریم.

منبع

دسته بندی : React.js

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

More in فونت
فونت های حرفه ای رایگان ۲۰۱۲

اکنون داریم به نیمه سال نزدیک می شویم و به احتمال زیاد شما دنبال فونت های جدید و زیبا می...

Close