国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Angular 學(xué)習(xí)日記 - 7 - 生命周期

這篇具有很好參考價(jià)值的文章主要介紹了Angular 學(xué)習(xí)日記 - 7 - 生命周期。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡單做個(gè)圖解

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)

?建議在實(shí)現(xiàn)Angular?生命周期(LifeCycle Hooks)時(shí),可以寫在類實(shí)現(xiàn)的后面,既可以方便他人知曉用了哪些生命周期方法,又可以用vscode自動(dòng)補(bǔ)全來生成該方法,還可以防止拼錯(cuò)方法名(指我自己)

import {
  AfterContentChecked,
  AfterContentInit,
  AfterViewChecked,
  AfterViewInit,
  Component,
  DoCheck,
  OnChanges,
  OnDestroy,
  OnInit,
  SimpleChanges,
} from '@angular/core';

export class ServerComponent
  implements
    OnInit,
    OnChanges,
    DoCheck,
    AfterContentInit,
    AfterContentChecked,
    AfterViewInit,
    AfterViewChecked,
    OnDestroy
{
  constructor() {}

  ngOnInit(): void {
    throw new Error('Method not implemented.');
  }
  ngOnChanges(changes: SimpleChanges): void {
    throw new Error('Method not implemented.');
  }
  ngDoCheck(): void {
    throw new Error('Method not implemented.');
  }
  ngAfterContentInit(): void {
    throw new Error('Method not implemented.');
  }
  ngAfterContentChecked(): void {
    throw new Error('Method not implemented.');
  }
  ngAfterViewInit(): void {
    throw new Error('Method not implemented.');
  }
  ngAfterViewChecked(): void {
    throw new Error('Method not implemented.');
  }
  ngOnDestroy(): void {
    throw new Error('Method not implemented.');
  }
}

簡單講點(diǎn)?

1、ngOnInit()

在構(gòu)造函數(shù)觸發(fā)后觸發(fā)

  constructor() {
    console.log('Constructor Called');
  }

  ngOnInit(): void {
    console.log('OnInit Called');
  }

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)?

2、ngOnChanges()

觸發(fā)時(shí)會自動(dòng)傳入一個(gè)SimpleChange類型的參數(shù),此處HTML代碼不重要,僅展示TS代碼

export class ServerComponent implements OnInit {
  @Input() element: { name: string; content: string; no: number };

  ngOnChanges(changes: SimpleChanges) {
    console.log('OnChanges Called', changes);
  }

  ...省略構(gòu)造函數(shù)和OnInit方法...
}

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)

這里打印的 element 對應(yīng)的是TS文件中 @Input() 修飾的 element 屬性。

一個(gè)有意思的例子:

在該組件的基礎(chǔ)上加入一個(gè)name屬性,傳入element.name 并用一個(gè)按鈕來修改它的值。

該組件代碼:

import { Component, Input, OnInit, SimpleChanges } from '@angular/core';

@Component({
  selector: 'app-server',
  templateUrl: './server.component.html',
  styleUrls: ['./server.component.css'],
})
export class ServerComponent implements OnInit {
  @Input() element: { name: string; content: string; no: number };
  @Input() name: string;

  constructor() {
    console.log('Constructor Called');
  }

  ngOnChanges(changes: SimpleChanges) {
    console.log('OnChanges Called', changes);
  }

  ngOnInit(): void {
    console.log('OnInit Called');
  }
}
<div class="panel panel-primary">
  <div class="panel-heading">{{ element.name }}</div>
  <div class="panel-body">
    <p>
      <strong *ngIf="element.no % 2 === 0" style="color: red">{{
        element.content
      }}</strong>
      <em *ngIf="element.no % 2 === 1" style="background-color: red">{{
        element.content
      }}</em>
    </p>
  </div>
</div>

根組件代碼:

export class ServersComponent implements OnInit {
  servers = [{ name: 'server1', content: 'Test server 1', no: 1 }];

  onChangeFirstName() {
    this.servers[0].name = 'Changed!';
  }
  
  ...省略無用部分...
}
...省略無用部分...  
<button class="btn btn-primary" (click)="onChangeFirstName()">
    Change First Name
  </button>
  <hr />
  <div *ngFor="let server of servers">
    <app-server [element]="server" [name]="server.name"></app-server>
  </div>

很容易發(fā)現(xiàn),name的修改,并沒有觸發(fā) element 的變動(dòng)。因?yàn)樵趦?nèi)存中,element 屬性指向的還是同一個(gè)對象,沒有變化。

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)

3、?ngDoCheck()

提供一個(gè)變更檢測運(yùn)行時(shí)執(zhí)行的方法。因?yàn)镈oCheck有很多觸發(fā)器,所以這里不適合去執(zhí)行太過復(fù)雜的代碼,會花費(fèi)太多資源。

值得一提的是Angular?變更檢測運(yùn)行的頻率和DoCheck的執(zhí)行頻率一致。

  ngDoCheck() {
    console.log('DoCheck Called');
  }

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)?

因?yàn)樵陂_發(fā)模式下運(yùn)行,Angular有一個(gè)額外的檢測周期,所以這里調(diào)用了兩次。

4、ngAfterContentInit() 和?ngAfterContentChecked()

可以看到它們在DoCheck之后調(diào)用,這是合理的,因?yàn)樗鼈冊诿總€(gè)變更周期后調(diào)用。

  ngAfterContentInit() {
    console.log('AfterContentInit Called');
  }

  ngAfterContentChecked() {
    console.log('AfterContentChecked Called');
  }

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)

5、ngAfterViewInit() 和?ngAfterViewChecked()

顯而易見,它們在content check之后調(diào)用

  ngAfterViewInit() {
    console.log('AfterViewInit Called');
  }

  ngAfterViewChecked() {
    console.log('AfterViewChecked Called');
  }

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)

6、?ngOnDestory()

組件銷毀時(shí)觸發(fā)。為了能看到組件被銷毀,預(yù)先給該組件添加了一個(gè)刪除按鈕。

  ngOnDestroy() {
    console.log('OnDestroy Called');
  }

Angular 學(xué)習(xí)日記 - 7 - 生命周期,學(xué)習(xí)?文章來源地址http://www.zghlxwxcb.cn/news/detail-765369.html

到了這里,關(guān)于Angular 學(xué)習(xí)日記 - 7 - 生命周期的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Angular 基礎(chǔ)] - 生命周期函數(shù)

    [Angular 基礎(chǔ)] - 生命周期函數(shù)

    之前的筆記: [Angular 基礎(chǔ)] - Angular 渲染過程 組件的創(chuàng)建 [Angular 基礎(chǔ)] - 數(shù)據(jù)綁定(databinding) [Angular 基礎(chǔ)] - 指令(directives) 以上為靜態(tài)頁面,即不涉及到跨組件交流的內(nèi)容 以下涉及到組件內(nèi)的溝通,從這開始數(shù)據(jù)就“活”了 [Angular 基礎(chǔ)] - 自定義事件 自定義屬性 [Angular 基礎(chǔ)]

    2024年02月20日
    瀏覽(22)
  • Angular系列教程之生命周期鉤子

    Angular系列教程之生命周期鉤子

    Angular是一種流行的前端開發(fā)框架,它提供了許多功能強(qiáng)大且易于使用的工具和特性。其中之一就是生命周期鉤子(Lifecycle Hooks),它們允許我們在組件的不同生命周期階段執(zhí)行自定義代碼。本文將介紹Angular的生命周期鉤子以及如何使用它們。 生命周期鉤子是一些用于在組件

    2024年01月17日
    瀏覽(41)
  • Angular--父子組件生命周期鉤子(lifecycle hooks)執(zhí)行過程

    Angular--父子組件生命周期鉤子(lifecycle hooks)執(zhí)行過程

    組件初始化過程中,生命周期鉤子執(zhí)行順序: constructor()構(gòu)造函數(shù),初始化class,(constructor不屬于Angular生命周期鉤子的范疇,這里只是說明組件組件初始化會先調(diào)用構(gòu)造函數(shù))。 ngOnChanges()--如果組件沒有輸入屬性(@Input()),或者使用時(shí)沒有提供任何輸入屬性,那么angular不會調(diào)用它

    2024年01月20日
    瀏覽(22)
  • 前端開發(fā)框架生命周期詳解:Vue、React和Angular

    作為前端開發(fā)者,掌握前端開發(fā)框架的生命周期是非常重要的。在現(xiàn)代Web應(yīng)用開發(fā)中,Vue.js、React和Angular是三個(gè)最流行的前端開發(fā)框架。本篇博客將詳細(xì)解讀這三個(gè)框架的生命周期,包括每個(gè)階段的含義、用途以及如何最大限度地利用它們。通過詳細(xì)的代碼示例和實(shí)用的技巧

    2024年02月13日
    瀏覽(28)
  • Angular 17+ 高級教程 – Component 組件 の 生命周期鉤子 (Lifecycle Hooks)

    Angular 17+ 高級教程 – Component 組件 の 生命周期鉤子 (Lifecycle Hooks)

    之前在 Component 組件 の Angular Component vs Custom Elements?文章中,我們有學(xué)習(xí)過幾個(gè)基礎(chǔ)的 Lifecycle Hooks。 比如?OnChanges、OnInit、AfterViewInit、OnDestroy,但那篇只是微微帶過而已。 這篇讓我們來深入理解 Angular 的?Lifecycle Hooks。 ? 在?Component 組件 の Dependency Injection NodeInjector?文章中

    2024年03月09日
    瀏覽(37)
  • 【Unity學(xué)習(xí)筆記】生命周期

    【Unity學(xué)習(xí)筆記】生命周期

    官方文檔:事件函數(shù)的執(zhí)行順序 如圖: 腳本的生命周期主要經(jīng)歷以下幾個(gè)階段: 初始化階段,(包括初始化Awake,OnEnable,然后Editor的Reset被穿插在著初始化過程之間,因此我們可以在腳本里重寫Reset方法,這將在編輯器中的game的start之前執(zhí)行。最后Start),當(dāng)我們開始游戲的

    2024年02月14日
    瀏覽(35)
  • 學(xué)習(xí)Vue:組件生命周期

    在Vue.js中,組件的生命周期是指組件從創(chuàng)建到銷毀的整個(gè)過程,而生命周期鉤子函數(shù)則是在不同階段執(zhí)行的函數(shù),允許您在特定時(shí)間點(diǎn)添加自定義邏輯。本文將詳細(xì)介紹組件的生命周期以及常用的生命周期鉤子函數(shù)。 組件的生命周期可以分為以下幾個(gè)階段: 創(chuàng)建階段: 在這

    2024年02月12日
    瀏覽(26)
  • Rust學(xué)習(xí)-生命周期

    Rust 最與眾不同的功能 之前學(xué)習(xí)中,有多種可能類型時(shí)必須注明類型;同理,引用的生命周期以一些不同方式相關(guān)聯(lián)時(shí),需要使用泛型生命周期參數(shù)來注明關(guān)系,這樣就能確保運(yùn)行時(shí)實(shí)際使用的引用有效 Rust 編譯器有一個(gè) 借用檢查器(borrow checker) 它比較作用域來確保所有的

    2024年02月16日
    瀏覽(18)
  • 前端學(xué)習(xí)--Vue(4) 生命周期

    前端學(xué)習(xí)--Vue(4) 生命周期

    一個(gè)組件從創(chuàng)建-運(yùn)行-銷毀的真?zhèn)€階段,強(qiáng)調(diào)的是一個(gè)時(shí)間段 ?1.1.1 創(chuàng)建 (只執(zhí)行一次) created() 階段任務(wù):最早可以使用methods中的方法發(fā)起ajax請求獲取數(shù)據(jù),并將數(shù)據(jù)掛載到data中 mounted() 階段任務(wù):最早可以操作dom元素 1.1.2 運(yùn)行 (最少0次,最多n次) beforeUpdate() 觸發(fā)時(shí)機(jī):

    2024年02月07日
    瀏覽(28)
  • Vue生命周期詳解學(xué)習(xí)筆記

    Vue生命周期詳解學(xué)習(xí)筆記

    生命周期又名生命周期回調(diào)函數(shù),生命周期函數(shù),生命周期鉤子。 生命周期是Vue在關(guān)鍵時(shí)刻幫我們調(diào)用的一些特殊名稱的函數(shù)。 生命周期函數(shù)的名字不可更改,但函數(shù)的具體內(nèi)容是程序員根據(jù)需求編寫的。 生命周期中的this指向vm或組件實(shí)例對象。 鉤子函數(shù)用來描述Vue實(shí)例從

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包