გამოიწერე YouTube-ის არხიyoutube logoგამოწერა
კომპონენტების სიცოცხლის ციკლის ჰუკები (Angular lifcycle hooks)

კომპონენტების სიცოცხლის ციკლის ჰუკები (Angular lifcycle hooks)

ანგულარში კომპონენტს აქვს სიცოცხლის ციკლი, რომელსაც ეწოდება ინგლისურად lifcycle და ეს სიცოცხლის ციკლი იწყება მაშინ, როდესაც ანგულარი ქმნის კლასს და არენდერებს კომპონენტის ხილულ ნაწლის (view)-ს.

სიცოცხლის ციკლი ანგულარში გრძელდება ცვლილებების დეტექტორით (change detection), რომლის დროსაც ანგულარი ამოწმებს კომპონენტის თვისებების ცვლილებას და ამის შემდეგ ის ანახლებს როგორც კომპონენტის ხილულ ნაწილს (view)-ს ასევე კომპონენტის (.ts) ფაილის მდგომარეობას (instance)-ს

სიცოცხლის ციკლი (lifecycle) სრულდება მაშინ, როდესაც ანგულარი გაანადგურებს შექმნილ კომპონენტს (destroys), ანუ დარენდერებულ DOM-ს.

ანგულარს აქვს ჩაშენებული სიცოცხლის ციკლის "ჰუკების" მეთოდები (lifecycke hooks methods) რომლებიც საშუალებას გვაძლევს ჩავებათ ცვლილებების დეტექციის დროს, მაგალითად ngOnDestroy() მეთოდია როდესაც ანგულარი ანადგურებს კომპონენტს.

მაგალითი:

import { Component, OnDestroy } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent implements OnDestroy {
  ngOnDestroy(): void {
    console.log('component is destroyed');
  }
}

მოცემულ მაგალითში ვიყენებთ ngOnDestroy() "ჰუკს", როდესაც ანგულარის ცვლილებების დეტექტორი (change detector) გაანადგურებს კომპონენტს კონსოლში დაიბეჭდება "component is destroyed" ტექსტი.

ანგულარში ყველა სიცოცხლის ციკლის "ჰუკს" (lifecycle hooks) აქვ თავისი ინტერფეისი, ხოლო მეთოდს აქვს პრეფიქსი ng, თუ ზემოთ მოცემულ მაგალითს დააკვირდებით დაინახავთ რომ ინტერფეისის სახელია OnDestroy, ხოლო მეთოდის სახელი ngOnDestroy()

ანგულარ აპლიკაციის დაწერისას არაა აუცილებელი მოთხოვნა გამოვიყენოთ რომელიმე სიცოცხლის ციკლი თუ ის არ გვჭირდება.

სიცოცხლის ციკლის თანმიმდევრობა

მას შემდეგ, რაც ჩვენი აპლიკაცია ქმნის კომპონენტის ან დირექტივის ინიციალიზაციას მისი კლასის კონსტრუქტორის დახმარებით, შემდეგ ანგულარი შეასრულებს სიცოცხლის ციკლის "ჰუკებს" შემდეგი თანმიმდევრობით

ჰუკის მეთოდის დასახელება აღწერა დროის მიმდევრობა
ngOnChange()

სრულდება მაშინ, როდესაც ანგულარი, ანიჭებს input propertie-ებს (ინფუთის თვისებებს) view-ს და კომპონენტს. (.html და .ts)

მეთოდი იღებს პარამეტრად SimpleChanges ტიპის ობიექტს, რომელშიც შენახულია კომპონენტის წინა და ახლანდელი თვისება მნიშვნელობის წყვილები

მოცემული "ჰუკი ეშვება ngOnInit() ჰუკამდე.

"ჰუკი" ეშვება ყოველი ცვლილების დროს მაშინ, როდესაც შეიცვლება ნებისმიერი თვისება ჩვენს კომპონენტსა თუ დირექტივაში

ngOnInit() მეთოდი სრულდება მას შემდეგ რაც არსებული კომპონენტის კონსტრუქტორი მოახდენს კომპონენტის ინიციალიზაციას

მეთოდი სრულდება მხოლოდ ერთხელ მას შემდეგ რაც შესრულდება ngOnChange() "ჰუკი".

 

ngDoCheck() მეთოდი სრულდება მას შემდეგ რაც გაეშვება კომპონენტის ცვლილებების დეტექტორი (change detector)

მეთოდი სრულდება ngOnChange() "ჰუკის" ყოველ შესრულებაზე, ანუ როდესაც ეშვება ანგულარის ცვლილებების დეტექტორი (change detection)

მეთოდი ეშვება ngOnInit() "ჰუკის" შესრულების პირველი შესრულების შემდგომ

ngAfterContentInit() მეთოდი სრულდება მას შემდეგ, რაც კომპონენტში მოხდება პროექცირებული კონტენტის ასახვა კომპონენტის ხილულ ნაწილში (view)-ში

მეთოდი სრულდება ერთხელ ngDoCheck() "ჰუკის" პირველი შესრულების შემდეგ

ngAfterContentChecked() მეთოდი სრულდება მას შემდეგ რაც ანგულარი შეამოწმებს პროექცირებულ კონტენტს დირექტივასა ან კომპონენტში

მეთოდი სრულდება ngAfterContentInit() "ჰუკის" შემდეგ და ყოველი ngDoCheck()-ის გაშვების დროს

ngAfterViewInit() მეთოდი სრულდება მას შემდეგ, რაც ანგულარი ქმნის კომპონენტის ხილულ ნაწილს (view)-ს ან კომპონენტის შვილ ხილულ (view) ნაწილებს

მეთოდი სრულდება ngAfterContentChecked()  "ჰუკის" პირველი შესრულების შემდეგ

ngAfterViewChecked() მეთოდი სრულდება მას შემდეგ რაც შეამოწმებს კომპონენტის ხილულ ნაწილს (view)-ს ან მისი შვილის ხილულ ნაწილს (view)-ს ან ხილულ ნაწილს რომელიც შეიცავს დირექტივას

მეთოდი სრულდება ngAfterViewInit() "ჰუკის" შემდეგ და ყოველი ngAfterContentChecked() "ჰუკის" შესრულებისას

ngOnDestroy() მეთოდი შეგვიძლია გამოვიყენოთ ასინქორონული ოპერაციების გაუქმებისთვის, რაც საშუალებას გვაძლევს ავიცილოთ ე.წ. მეხსიერიბს გაჟონვები (memory leaks)

მეთოდი სრულდება მას შემდეგ რაც, ანგულარი გაანადგურებს კომპონენტს ან დირექტივას

 

კურსში შემავალი თემები

🔗 Angular🔗 typescript🔗 javascript

დამატებითი რესურსები

სხვა კატეგორიები

შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა

ბოლოს დაწერილი ბლოგები პროგრამირებაზე

ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით