【angular19】入門基礎教程(三):關于angular里面的響應式數據入門使用

三個框架,都有響應式數據的概念。在angular里面有專門的叫法,響應式數據叫信號,英文名signal。其他兩個框架式沒有專門的名字的,統稱為動態數據。這點可以說,angular還是太細了,細節值得點贊!!

那么,信號也就是響應式數據在ng里面該怎么使用呢?

實現效果

請添加圖片描述

代碼實現

  • 省略無關代碼,核心包中引入signal這個api,包裝我們需要做成響應式的數據
import { Component, signal } from '@angular/core';
money = signal(100);handleChangeAge = () => {this.money.update((v) => v + 100);
};
  • 頁面上使用
<p>我銀行賬戶的存款:{{money()}}</p>
<button (click)="handleChangeAge()">改變年齡</button>

注意:

  • 頁面上使用的使用,無論是響應式數據還是方法的調用都要加上(),否則頁面上無法顯示,這點跟其他兩個框架略有差別。
  • ng中事件綁定用的是(enventType) = "enventName()"
  • 動態屬性用的是[attrName] = "attrName2"

計算屬性

根據已有的值計算出新的一個值,這樣我們就可以用到computed這個api,這個屬性是惰性的,之前的計算結果會被緩存,如果再次讀取,就會返回緩存的值,不重新計算。

只有當依賴的值變化后,ng才會知道更新緩存的值了

<p>我銀行賬戶的存款:{{money()}}</p>
<p>需要換銀行的貸款:{{payload()}}</p><button (click)="handleChangeAge()">改變存款</button>
money = signal(100);
payload = computed(() => this.money() * 2);

在這里插入圖片描述

  • 計算屬性是不可寫的,也就是無法直接改變,要改變計算屬性最直接的就是改變他依賴的值。

  • 直接set是會報錯在這里插入圖片描述

副作用effect的使用

就是當任何signal變化時,都會觸發effect的運行,所以我們可以用effect創建一個副作用:

effect(() => {console.log(`The current count is: ${count()}`);
});

在這里插入圖片描述
在ts項目中,直接這樣寫會提示語法錯誤,需要有返回值。
所以給它賦值下就可以了

在這里插入圖片描述
或者是在constructor中進行初始化
在這里插入圖片描述

請添加圖片描述

  • 副作用effect使用推薦的場景

    • 記錄正在顯示的數據及其更改時間,用于分析或作為調試工具。
    • 使數據與 window.localStorage 保持同步。
    • 添加無法用模板語法表達的自定義 DOM 行為。
    • 對 、圖表庫或其他第三方 UI 庫執行自定義渲染。
  • 手動注入effect

import {Component,signal,computed,effect,inject,Injector,
} from '@angular/core';@Component({selector: 'UserProfile',templateUrl: './index.html',styleUrls: ['./index.css'],
})
export class UserProfile {// constructor() {//   effect(() => {//     console.log(`payload, ${this.payload()}`);//     console.log('money-------', this.money());//   });// }ngOnInit(): void {this.initializeLogging();}title = '用戶信息展示組件';userInfo = {name: '張三',age: 20,sex: '男',address: {city: '北京',street: '朝陽區',},};readonly money = signal(100);private injector = inject(Injector);payload = computed(() => this.money() * 2);handleChangeAge = () => {this.money.update((v) => v + 100);};initializeLogging(): void {effect(() => {console.log(`The count is: ${this.money()}`);},{ injector: this.injector });}reset(): void {this.money.set(0);}
}
<button (click)="handleChangeAge()">改變存款</button>
<button (click)="reset()">重置</button>

請添加圖片描述

  • effect取消對某個值的監聽untracked這個api包裹就可以了
effect(() => {console.log(`The count is: ${untracked(this.money)}`);},{ injector: this.injector }
);
  • 在effect里面銷毀定時器等操作
effect(
(onCleanup) => {const timer = setInterval(() => {this.money.update((v) => v + 1);}, 1000);onCleanup(() => clearInterval(timer));
},
{ injector: this.injector }
);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904083.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904083.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GitHub Actions 和 GitLab CI/CD 流水線設計

以下是關于 GitHub Actions 和 GitLab CI/CD 流水線設計 的基本知識總結: 一、核心概念對比 維度GitHub ActionsGitLab CI/CD配置方式YAML 文件(.github/workflows/*.yml).gitlab-ci.yml執行環境GitHub 托管 Runner / 自托管GitLab 共享 Runner / 自托管市場生態Actions Mar…

【網絡編程】HTTP(超文本傳輸協議)詳解

&#x1f984;個人主頁:修修修也 &#x1f38f;所屬專欄:網絡編程 ??操作環境:Visual Studio 2022 目錄 &#x1f4cc;HTTP定義 &#x1f4cc;HTTP工作原理 1.客戶端發起請求: 2.服務器處理請求: 3.客戶端處理響應: &#x1f4cc;HTTP關鍵特性 &#x1f38f;HTTP請求方法 &am…

Centos小白之在CentOS8.5中安裝Rabbitmq 3.10.8

注意事項 安裝以及運行等其他操作&#xff0c;要使用root賬號進行&#xff0c;否則會遇到很多麻煩的事情。 使用命令行進行遠程登錄 ssh root192.168.0.167 安裝make 執行安裝命令 yum -y install make gcc gcc-c kernel-devel m4 ncurses-devel openssl-devel這里有可能會…

SQL筆記——左連接、右連接、內連接

前言&#xff1a;總是忘記表連接的區別&#xff0c;在面試的時候也容易被問到&#xff0c;因此就好記性不如爛筆頭吧 集合運算 有并集、交集、差集 聯合查詢*&#xff08;針對行合并的&#xff09;* union為關鍵字&#xff0c;就是將兩個select的結果求并集&#xff08;此時重…

LeetCode - 19.刪除鏈表的倒數第N個結點

目錄 題目 解法一 雙指針算法 核心思想 執行流程 具體例子 代碼 解法二 兩次遍歷法 核心思想 執行流程 具體例子 代碼 題目 19. 刪除鏈表的倒數第 N 個結點 - 力扣&#xff08;LeetCode&#xff09; 解法一 雙指針算法 核心思想 利用雙指針間隔固定距離(n1)&a…

C# 編程核心:控制流與方法調用詳解

在編程中&#xff0c;控制流和方法調用是構建程序邏輯的兩大基石。它們決定了代碼的執行順序和模塊化協作方式。本文將從基礎概念出發&#xff0c;結合代碼示例&#xff0c;深入解析這兩部分內容。 控制流&#xff1a;程序執行的指揮棒 控制流決定了代碼的執行路徑&#xff0…

Sentinel學習

sentinel是阿里巴巴研發的一款微服務組件&#xff0c;主要為用戶提供服務保護&#xff0c;包括限流熔斷等措施 &#xff08;一&#xff09;主要功能 流量控制&#xff08;限流&#xff09;&#xff1a;比如限制1s內有多少請求能到達服務器&#xff0c;防止大量請求打崩服務器…

Linux中進程的屬性:進程優先級

一、優先級和進程優先級 1.1什么是優先級 優先級就是獲取某種資源的先后順序&#xff0c;比如打飯時排隊&#xff1a;排隊就是在確認優先級 1.2為什么要有優先級 本質上其實是目標資源相對于需求者來說比較少&#xff0c;如CPU&#xff0c;磁盤&#xff0c;顯示器&#xff…

基于LangChain 實現 Advanced RAG-后檢索優化(上)-Reranker

摘要 Advanced RAG 的后檢索優化&#xff0c;是指在檢索環節完成后、最終響應生成前&#xff0c;通過一系列策略與技術對檢索結果進行深度處理&#xff0c;旨在顯著提升生成內容的相關性與質量。在這些優化手段中&#xff0c;重排序優化&#xff08;Reranker&#xff09;作為核…

【云備份】熱點管理模塊

目錄 1.熱點管理文件的基本思路 2.熱點管理類的設計 3.熱點管理類的實現 1.熱點管理文件的基本思路 服務器端的熱點文件管理是對上傳的非熱點文件進行壓縮存儲&#xff0c;節省磁盤空間。 而熱點文件的判斷在于上傳的文件的最后一次訪問時間是否在熱點判斷時間之內。 實…

LeetCode 560. 和為 K 的子數組 | 前綴和與哈希表的巧妙應用

文章目錄 方法思路&#xff1a;前綴和 哈希表核心思想關鍵步驟 代碼實現復雜度分析示例解析總結 題目描述 給定一個整數數組 nums 和一個整數 k&#xff0c;請統計并返回該數組中和為 k 的子數組的數量。 子數組是數組中連續的非空元素序列。 示例 輸入&#xff1a;nums …

Windows配置grpc

Windows配置grpc 方法一1. 使用git下載grph下載速度慢可以使用國內鏡像1.1 更新子模塊 2. 使用Cmake進行編譯2.1 GUI編譯2.2 命令行直接編譯 3. 使用Visual Studio 生成解決方法 方法二1. 安裝 vcpkg3.配置vckg的環境變量2. 使用 vcpkg 安裝 gRPC3. 安裝 Protobuf4. 配置 CMake…

【算法基礎】快速排序算法 - JAVA

一、算法基礎 1.1 什么是快速排序 快速排序&#xff08;Quick Sort&#xff09;是一種高效的分治排序算法&#xff0c;由英國計算機科學家Tony Hoare于1960年提出。它的核心思想是&#xff1a; 選擇一個基準元素&#xff08;pivot&#xff09;將數組分成兩部分&#xff1a;小…

Linux用戶管理命令和用戶組管理命令

一、用戶管理命令 1.1、adduser 添加新用戶 1、基本語法 adduser 用戶名 &#xff08;功能描述&#xff1a;添加新用戶&#xff09; 應用場景1&#xff1a;企業開發&#xff0c;多人協同&#xff08;也會有多人使用相同的一個低權限用戶&#xff09;。 應用場景2&#x…

記錄兩個免費開源又好用的后臺模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后臺集成方案 1.簡介 vue-element-plus-admin 是一個基于 element-plus 免費開源的中后臺模版。使用了最新的 Vue3&#xff0c;Vite&#xff0c;Typescript等主流技術開發&#xff0c;開箱即用的中后…

Flip PDF Plus Corp7.7.22電子書制作軟件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企業級的翻頁電子書制作軟件&#xff0c;擁有豐富的模板&#xff0c;主題和動畫場景&#xff0c;每本書最大頁數1000頁&#xff0c;每本書的最大大小1GB&#xff0c;即可以幫助企業用戶制作好豐富的電子書籍。 …

C語言藍橋杯真題代碼

以下是不同屆藍橋杯C語言真題代碼示例&#xff0c;供參考&#xff1a; 第十三屆藍橋杯省賽 C語言大學B組 真題&#xff1a;卡片 題目&#xff1a;小藍有很多數字卡片&#xff0c;每張卡片上都是數字1-9。他想拼出1到n的數列&#xff0c;每張卡片只能用一次&#xff0c;求最大的…

[Windows] Kazumi番劇采集v1.6.9:支持自定義規則+在線觀看+彈幕,跨平臺下載

[Windows] Kazumi番劇采集 鏈接&#xff1a;https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 開發的輕量級番劇采集工具&#xff0c;專為ACG愛好者設計。通過;自定義XPath規則; 實現精準內容抓取&#xff0c;支持多平臺&#xff08;An…

探秘數據結構:構建高效算法的靈魂密碼

摘要 數據結構作為計算機科學的基石&#xff0c;其設計與優化直接影響算法效率、資源利用和系統可靠性。本文系統闡述數據結構的基礎理論、分類及其核心操作&#xff0c;涵蓋數組、鏈表、棧、隊列、樹、圖、哈希表與堆等經典類型。深入探討各結構的應用場景與性能對比&#xf…

機器人--架構及設備

機器人的四大組成部分 控制系統 驅控系統 執行系統 電機屬于執行系統的設備。 傳感系統 傳感系統分為內部傳感系統和外部傳感系統。 內部傳感系統(內部傳感器)&#xff1a; 用于獲取機器人內部信息&#xff0c;比如IMU&#xff0c;力傳感器等。 外部傳感系統(外部傳感器):…