آموزش ReactJS – فصل هشتم: چرخه زندگی کامپوننت ها

ری اکت به شیوه ای خاص یک کامپوننت را ایجاد می کند و در نهایت از بین می برد. به زمان بین ایجاد و از بین رفتن یک کامپوننت، چرخه زندگی کامپوننت گفته می شود. فصل هشتم آموزش گام به گام ReactJS به شرح چرخه زندگی کامپوننت ها اختصاص دارد. با ما در این فصل کوتاه همراه باشید.

ReactJS - فصل هشتم: چرخه زندگی کامپوننت

متود های چرخه زندگی کامپوننت ها در ReactJS

  • componentWillMount قبل از اینکه اطلاعات بر روی سرور یا صفحه کلاینت چاپ شود، این متود اجرا خواهد شد. این اولین متود اجرا شده از چرخه زندگی کامپوننت هاست.
  • componentDidMount بعد از اولین چاپ بر روی صفحه کلاینت اجرا می شود. اینجا زمانی است که بهتر است تغییرات جاوا اسکریپتی و HTML بر روی صفحه اتفاق بیوفتد. این متود همچنین برای ادغام دیگر فریم های جاوا اسکریپت مورد استفاده قرار می گیرد. می توانید برای استفاده از فانکشن هایی مانند setTimeout و setInterval از این متود استفاده کنید. ما از این متود برای بروزرسانی استیت استفاده می کنیم تا بتوانیم بقیه متود های چرخه را نیز به اجرا دراوریم.
  • componentWillReceiveProps در صورت بروزرسانی پراپ ها، قبل از چاپ هر اطلاعات دیگری این متود به اجرا در خواهد آمد. بعد از آپدیت State ما با استفاده از متود setNewNumber این فانکشن را به اجرا وادار می کنیم.
  • shouldComponentUpdate این متود بهتر است مقدار true یا false را بازگرداند. این متود مشخص می کند که آیا یک کامپوننت قرار است بروزرسانی شود یا نه. به صورت پیشفرض مقدار این متود برابر true است. اگر شما مطمئن هستید که این کامپوننت قرار نیست بعد از بروزرسانی استیت ها یا پراپ ها بروزرسانی شود، می توانید مقدار آن را برابر false قرار دهید.
  • componentWillUpdate قبل از چاپ اطلاعات این متود به اجرا در خواهد آمد.
  • componentDidUpdate دقیقا بعد از چاپ اطلاعات این متود به اجرا در خواهد آمد.
  • componentWillUnmount بعد از اینکه کامپوننت از DOM حذف می شود، اجرا خواهد شد.

در مثال زیر، در متود سازنده constructor ما استیت ها را ست کرده ایم و سپس در متود setNewNumber اطلاعات استیت را آپدیت کرده ایم.

کد زیر را درون فایل App.jsx قرار دهید:

import React from 'react';

class App extends React.Component {
   constructor(props) {
      super(props);
      
      this.state = {
         data: 0
      }
      this.setNewNumber = this.setNewNumber.bind(this)
   };
   setNewNumber() {
      this.setState({data: this.state.data + 1})
   }
   render() {
      return (
         <div>
            <button onClick = {this.setNewNumber}>INCREMENT</button>
            <Content myNumber = {this.state.data}></Content>
         </div>
      );
   }
}
class Content extends React.Component {
   componentWillMount() {
      console.log('Component WILL MOUNT!')
   }
   componentDidMount() {
      console.log('Component DID MOUNT!')
   }
   componentWillReceiveProps(newProps) {    
      console.log('Component WILL RECIEVE PROPS!')
   }
   shouldComponentUpdate(newProps, newState) {
      return true;
   }
   componentWillUpdate(nextProps, nextState) {
      console.log('Component WILL UPDATE!');
   }
   componentDidUpdate(prevProps, prevState) {
      console.log('Component DID UPDATE!')
   }
   componentWillUnmount() {
      console.log('Component WILL UNMOUNT!')
   }
   render() {
      return (
         <div>
            <h3>{this.props.myNumber}</h3>
         </div>
      );
   }
}
export default App;

کد زیر را درون فایل index.js قرار دهید:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('root'));

setTimeout(() => {
   ReactDOM.unmountComponentAtNode(document.getElementById('root'));}, 10000);

پس از اجرای پروژه با کد های مثال بالا، صفحه ای مانند تصویر زیر می بینید. 10 ثانیه فرصت دارید بر روی دکمه کلیک کنید تا اعداد اضافه شود، پس از 30 ثانیه کامپوننت از صفحه حذف می شود. پس از حذف شدن محیط کنسول مرورگر را نگاه کنید تا Log نوشته شده را در هر فانکشن ببینید.

مثال چرخه زندگی کامپوننت ها

ویدیوها و مطالب مشابه