React項目知識積累(四)

1.useMemo( )

在 React 中,useMemo 是一個 Hook,用于記憶計算結果,只有當依賴項之一發生變化時,才會重新計算。這有助于避免不必要的計算和渲染,從而提高應用程序的性能。

基本語法如下:

const memoizedValue = useMemo(() => computeExpensiveValue(a, b), [a, b]);

在這個例子中,computeExpensiveValue 是一個可能很昂貴的計算函數,它依賴于參數 abuseMemo 的第一個參數是一個函數,該函數在組件首次渲染時執行,并返回想要記憶的值。第二個參數是一個數組,包含了這個函數的依賴項。只有當數組中的任何值發生變化時,computeExpensiveValue 函數才會重新執行。

useMemo 特別有用在處理復雜計算、大型對象或數組時,它可以防止不必要的重復計算,從而節省性能。

例如,假設你有一個計算兩個數相加的函數,并且你想要在組件中記憶這個結果:

import React, { useState, useMemo } from 'react';function MyComponent({ initialNumber }) {const [number, setNumber] = useState(initialNumber);const [number2, setNumber2] = useState(initialNumber + 1);const sum = useMemo(() => number + number2, [number, number2]);return (<div><p>Number: {number}</p><p>Number2: {number2}</p><p>Sum: {sum}</p><button onClick={() => setNumber(number + 1)}>Increment Number</button><button onClick={() => setNumber2(number2 + 1)}>Increment Number2</button></div>);
}

在這個例子中,sum 是通過 useMemo 記憶的,它只有在 numbernumber2 發生變化時才會重新計算。這樣,只要 numbernumber2 的值保持不變,sum 的值就不會改變,從而節省了性能。

useMemo 是一個強大的性能優化工具,但使用時需要謹慎,因為它可能會隱藏潛在的性能問題,使代碼更難維護。在決定使用 useMemo 之前,最好先考慮是否真的需要它。

const subMit = useMemo(()=>{return dataValue?.map(()=>{return { data };});},[ date ]);

2. :global{? }

在CSS中,:global 偽類用于選擇器匹配文檔中的所有元素,而不考慮它們是否位于一個特定的作用域內。這通常用于在CSS中引入外部的CSS文件或定義全局樣式。

使用 :global 偽類,你可以確保選擇器不會與當前組件或作用域內的任何本地選擇器沖突。這對于使用CSS預處理器或模塊化CSS時非常有用,因為它可以幫助避免命名空間的沖突。

下面是一個使用 :global 偽類的例子:

/* 在組件內部使用:global來引入全局樣式 */
.global-class {color: red;
}/* 或者在組件外部定義全局樣式 */
:global .global-class {color: blue;
}//局部作用
.bankenName{:global{.ant-divider-horizontal{font-size:16px !important;}}
}

在這個例子中,.global-class 是一個全局定義的類,它不會與組件內部定義的相同類名產生沖突。.global-class 會選擇文檔中的所有具有該類名的元素,并應用藍色文字樣式。

請注意,:global 偽類在不同的CSS處理器和預處理器中可能有不同的支持程度。在Sass中,你可以使用 @global 指令來實現相同的功能。

在 CSS Modules 中,通常情況下,樣式是局部作用域的,即只應用于特定的組件或模塊。但有時你可能需要定義一些全局樣式,例如重置默認樣式或設置全局主題。這時,可以使用 :global{ } 來定義全局樣式規則。

3.自定義函數方法

在一個頁面定義多個函數方法,在另一個頁面調用。

//自定義組件的頁面,可以定義多個組件,靈活調用
export const skipToElement = (elementId) => {const element = document.getElementById(elementId);if (element) {element.scrollIntoView({ block: 'start', behavior: 'smooth' });}
};export const routes = {homePage: {label: <div>首頁</div>,key: 1,neme: 'home',Children: [{ key: value }, { key: value }],},snowball: {label: "snow",key: 2,neme: 'snow',Children: [{ key: value }, { key: value }],},
};//另一個頁面調用函數
import {routes , skipToElement} from '../../../../../base';const onclick=(values)=>{if(values){skipToElement(values);}
}

4.Modal.confirm( )

antd中的Modal彈窗,進行交互的操作。

  Modal.confirm({title: '標題',icon: <Excalmation />,okText: '確定',cancelText: '取消',onOk: () => {},onCancel: () => {},});

5.includes()

includes() 方法用于判斷數組是否包含某個指定的值,并返回一個布爾值。該方法是Array.prototype的實例方法,因此可以在任何數組對象上調用它。

const arr = [1, 2, 3, 4, 5];console.log(arr.includes(2)); // 輸出:true
console.log(arr.includes(6)); // 輸出:false

includes() 方法可以接受兩個參數:

  1. searchElement(必選):要搜索的元素。
  2. fromIndex(可選):從該索引處開始搜索?searchElement。默認值為?0,表示從數組的開始位置搜索。
const arr = [1, 2, 3, 4, 5];console.log(arr.includes(2, 2)); // 輸出:false
console.log(arr.includes(3, 3)); // 輸出:true

includes() 方法是區分大小寫的,也就是說,它使用的是全等比較(===)。如果你想進行不區分大小寫的搜索,可以先將數組中的元素或要搜索的元素轉換為相同的大小寫形式,然后再使用 includes() 方法進行搜索。

const arr = ['apple', 'Banana', 'orange'];console.log(arr.includes('banana')); // 輸出:false
console.log(arr.includes('Banana'.toLowerCase())); // 輸出:true

在這個例子中,arr.includes('banana') 的結果是 false,因為 'banana''Banana' 是區分大小寫的。而 arr.includes('Banana'.toLowerCase())'Banana' 轉換為小寫,然后再進行搜索,因此結果是 true

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

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

相關文章

html多節點生成圖片并導出zip包

html多節點生成圖片并導出zip包 背景 在做項目時遇到一個要將html節點展示的圖片列表統一導出為zip包的需求。 難點 將html節點生成圖片將多張圖片加入zip包中&#xff0c;然后下載 解決html生成圖片問題 參考html截圖的思路使用 pnpm add html-to-image如何將圖片資源生成z…

鴻蒙OS開發:【一次開發,多端部署】(多設備自適應能力)簡單介紹

多設備自適應能力 介紹 本示例是《一次開發&#xff0c;多端部署》的配套示例代碼&#xff0c;展示了[頁面開發的一多能力]&#xff0c;包括自適應布局、響應式布局、典型布局場景以及資源文件使用。 名稱簡介 開發前請熟悉鴻蒙開發指導文檔&#xff1a;gitee.com/li-shizhe…

數據可視化技術頭歌測試合集

努力是為了不平庸~ 學習的最大理由是想擺脫平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;遲一天就多一天平庸的困擾 目錄 時間趨勢可視化-柱形圖 第1關&#xff1a;“大胃王”比賽數據柱形圖繪制——繪制柱形圖的基本步驟 任務描述 相關知識 觀察和處理數據 繪…

Linux中gcc/g++的基本使用

目錄 gcc/g的使用gcc/g是如何生成可執行文件的預處理編譯匯編鏈接 庫.o文件是如何與庫鏈接的&#xff1f; debug版本和release版本 gcc/g的使用 在windows中&#xff0c;我們在VS中編寫好了代碼之后就可以直接在VS中對源碼進行編譯等操作后運行 而在Linux下&#xff0c;我們可…

LeetCode 279 —— 完全平方數

閱讀目錄 1. 題目2. 解題思路3. 代碼實現 1. 題目 2. 解題思路 此圖利用動態規劃進行求解&#xff0c;首先&#xff0c;我們求出小于 n n n 的所有完全平方數&#xff0c;存放在數組 squareNums 中。 定義 dp[n] 為和為 n n n 的完全平方數的最小數量&#xff0c;那么有狀態…

vue 展示svg矢量圖可縮放拖動

使用插件&#xff1a;svg-pan-zoom <template> <!-- svg圖--><div id"svgContainer"></div> </template><script> import svgPanZoom from svg-pan-zoom import svgFile from ../datav/img/220kVscb.svg // 路徑根據實際情況調…

MySQL存儲過程實現累加運算 1+2+…+n 等于多少?

MySQL創建存儲過程&#xff0c;實現累加運算&#xff0c;計算 12…n 等于多少。具體的代碼如下 1、實現計算123…n的和 DELIMITER // CREATE PROCEDURE sp_add_sum_num(IN n INT) BEGIN DECLARE i INT; DECLARE sum INT; SET i 1; SET sum 0;WHILE i < n DO SET sum …

若依框架實戰指南:從入門到精通

在當今快節奏的軟件開發環境中&#xff0c;選擇一個高效、可靠的開發框架至關重要。若依框架&#xff08;RuoYi&#xff09;作為一個基于Spring Boot和MyBatis的快速開發平臺&#xff0c;以其強大的功能和易用性受到了廣泛歡迎。本文將詳細介紹若依框架的使用方式&#xff0c;包…

計算機組成結構—中斷和異常

一、基本概念和分類 計算機在執行程序的過程中&#xff0c;有時會遇到一些異常情況或者特殊請求&#xff1b;這時就需要計算機暫停正在運行的程序&#xff0c;轉而先去處理這些異常或特殊請求&#xff0c;處理結束之后再返回程序的斷點處繼續執行。這種處理方式就被稱為 “中斷…

頂堅北斗有源終端有什么功能跟用途

頂堅北斗有源終端作為現代衛星導航與通信技術融合的杰出代表&#xff0c;其用途廣泛且功能強大。在廣袤無垠的偏遠山區、深邃的海洋以及荒蕪的沙漠中&#xff0c;當用戶面臨移動通信信號無法覆蓋的困境時&#xff0c;北斗有源終端便成為了連接世界的橋梁。 該終端的核心功能之一…

PE文件(六)新增節-添加代碼作業

一.手動新增節添加代碼 1.當預備條件都滿足&#xff0c;節表結尾沒有相關數據時&#xff1a; 現在我們將ipmsg.exe用winhex打開&#xff0c;在節的最后新增一個節用于存放我們要增加的數據 注意&#xff1a;飛鴿的文件對齊和內存對齊是一致的 先判斷節表末尾到第一個節之間…

奧德彪的幸福VS碼農的幸福

奧德彪的幸福 非洲國家布隆迪是一個全球最不發達國家之一&#xff0c;大部分居民以農業為生&#xff0c;其中包括香蕉&#xff0c;人們拿香蕉用來做飯也用來釀酒。 香蕉產地距離布隆迪首都布瓊布拉很遠&#xff0c;而這個國家又缺乏規模化的物流企業&#xff0c;于是就誕生了…

Linux進程--函數 system 和 popen 的區別

system() 和 popen() 是 C 語言中用于執行外部命令的兩個函數&#xff0c;它們的功能類似&#xff0c;但在使用方式和特性上有一些區別。 system() system() 函數允許您在程序中執行外部命令&#xff0c;并等待該命令執行完成后繼續執行程序。其基本語法如下&#xff1a; in…

如何使用腳本執行SQL Server 數據庫壓縮備份?

SQL Server 數據庫壓縮備份是否可以實現&#xff1f; 使用時&#xff0c;SQL Server 數據庫會變得非常大&#xff0c;備份也是如此。它們占用大量磁盤空間&#xff0c;并且每次備份數據庫或四處移動都非常耗時。因此&#xff0c;您可能想知道是否有任何方法可以創建壓縮備份。…

pikachu靶場(SQL注入基于布爾的盲注)python實現

import requests from bs4 import BeautifulSoupurl "http://localhost:8086/pikachu-master/vul/sqli/sqli_blind_b.php"def get_database_name(url):dataname # 初始化一個空字符串用于存儲數據庫名dict abcdefghijklmnopqrstuvwxyz # 數據庫名可能存在這些…

docker實戰之搭建MYSQL8.0主從同步

目錄 環境配置容器創建主服務器創建MYSQL容器新增my.cnf文件創建用戶并授權 從服務器創建MYSQL容器新增my.cnf文件重啟MYSQL容器配置主從同步 驗證主從同步彩蛋 MySQL 主從同步&#xff08;Master-Slave Replication&#xff09;是一種常用的解決方案&#xff0c;它允許一個主服…

Golang實現根據文件后綴刪除文件和遞歸刪除文件

概述 這個功能會非常強大&#xff0c;因為在日常工作中&#xff0c;我通常會遇到需要批量刪除文件的場景&#xff0c;通過這個方法&#xff0c;再結合我的另一個 命令行開發框架&#xff0c;能夠很輕松的開發出這個功能。 代碼 package zdpgo_fileimport ("errors"…

LabVIEW與串口通訊在運行一段時間后出現數據接收中斷的問題

這些問題可能與硬件、軟件或通信協議有關。以下是詳細的原因分析和可能的解決方案&#xff1a; 一、硬件原因 串口線纜或接口問題&#xff1a; 由于長時間使用&#xff0c;串口線纜可能出現接觸不良或損壞。接口松動也可能導致通訊中斷。 解決方案&#xff1a;檢查并更換串口…

C語言基礎-內存申請和釋放

在C語言中&#xff0c;malloc 和 free 是用于動態內存分配和釋放的函數。而在C中&#xff0c;new 和 delete 提供了類似的功能&#xff0c;但它們之間有一些重要的區別。 1. malloc 和 free malloc malloc 函數用于在堆上動態地分配指定字節數的內存。它的原型在 stdlib.h 頭…

【Text2SQL 經典模型】X-SQL

論文&#xff1a;X-SQL: reinforce schema representation with context ???? Microsoft, arXiv:1908.08113 X-SQL 與 SQLova 類似&#xff0c;使用 BERT style 的 PLM 來獲得 representation&#xff0c;只是融合 NL question 和 table schema 的信息的方式不太一樣&#…