hook函數——useReducer

目錄

  • 1.useReducer定義
  • 2.useReducer用法
  • 3.useState和useReducer區別

1.useReducer定義

const [state, dispatch] = useReducer(reducer, initialArg, init?)

  • reducer:用于更新 state 的純函數。參數為 state 和 action,返回值是更新后的 state。state 與 action 可以是任意合法值。
  • initialArg:用于初始化 state 的任意值。初始值的計算邏輯取決于接下來的 init 參數。
  • 可選參數 init:用于計算初始值的函數。如果存在,使用 init(initialArg) 的執行結果作為初始值,否則使用 initialArg。

2.useReducer用法

這里我使用ts的語法,根據定義可以知道,我們首先需要聲明一個reducer函數,函數中包含兩個參數,一個是數據的狀態state,也就是初始值,另一個是對數據需要進行的操作,在函數體里面通過switch case語句指出不同的type需要進行的不同操作,這里實現的是一個計數器原理

type Action = { type: 'add' } | { type: 'del' };function reducer(state: number, action: Action) {switch (action.type) {case 'add':return state + 1;case 'del':return state - 1;default:return state;}
}

在組件中初始化useReducer,給按鈕分別添加響應事件,通過dispatch分發點擊的type,就可以執行reducer函數里對應的操作了

function App() {const [state, dispatch] = useReducer(reducer, 0);const handleAdd = () => {dispatch({ type: 'add' });};const handleDel = () => {dispatch({ type: 'del' });};return (<div className="App"><h1>Count: {state}</h1><button onClick={handleAdd}>Add</button><button onClick={handleDel}>Del</button></div>);
}

在這里插入圖片描述
在這里插入圖片描述

3.useState和useReducer區別

useState適用于處理簡單的狀態管理,適用于獨立的、無關聯的狀態。
useReducer適用于處理復雜的狀態邏輯,具有多個相關狀態需要統一管理的情況。

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

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

相關文章

這波操作看麻了!十億行數據,從71s到1.7s的優化之路。

節期間關注到了一個關于 Java 方面的比賽&#xff0c;很有意思。由于是開源的&#xff0c;我把項目拉下來試圖學&#xff08;白&#xff09;習&#xff08;嫖&#xff09;別人的做題思路&#xff0c;在這期間一度讓我產生了一個自我懷疑&#xff1a; 他們寫的 Java 和我會的 Ja…

解鎖軟件管理新篇章,Allegro許可證使用規定全解

在數字化經濟的時代&#xff0c;軟件已經成為企業運營的關鍵要素。然而&#xff0c;軟件的使用往往伴隨著一系列的合規性問題&#xff0c;導致企業面臨潛在的風險和成本。Allegro許可證作為業界領先的軟件解決方案提供商&#xff0c;為企業提供全面的許可證使用規定&#xff0c…

每日一題——LeetCode1576.替換所有的問號

方法一 3個字母原則 把&#xff1f;替換為和他左右都不相等的字符&#xff0c;那么找3個字符abc&#xff0c;&#xff1f;總能替換為abc中的一個字符&#xff0c;遍歷字符串找到所有&#xff1f;&#xff0c;再遍歷abc把&#xff1f;替換為abc中的一個字符 var modifyString …

解析 openGauss 的 AutoVacuum 機制及優化策略

前言 在 openGauss 數據庫中&#xff0c;AutoVacuum 機制是一個關鍵的自動化功能&#xff0c;用于管理表的空間和性能。AutoVacuum 通過定期清理過時數據和更新統計信息&#xff0c;幫助數據庫管理員維護數據庫的性能和穩定性。 為什么需要 AutoVacuum&#xff1f; 了解AutoV…

JAVA內存模型與JVM內存結構

注意區分Java內存模型&#xff08;Java Memory Model&#xff0c;簡稱JMM&#xff09;與Jvm內存結構&#xff0c;前者與多線程相關&#xff0c;后者與JVM內部存儲相關。本文會對兩者進行簡單介紹。 一、JAVA內存模型(JMM) 1. 概念 說來話長&#xff0c;由于在不同硬件廠商和…

No matching version found for @babel/traverse@^7.24.0.

問題&#xff1a; npm安裝 依賴失敗&#xff0c;找不到所需依賴。 原因&#xff1a; npm鏡像源中沒有該依賴。&#xff08;大概率是因為依賴最近剛更新&#xff0c;當前鏡像源沒有同步&#xff09; 解決&#xff1a; 查看自己的npm鏡像&#xff1a;npm config get registry…

機器學習-面經(part2)

3. 驗證方式 3.1什么是過擬合?產生過擬合原因? 定義:指模型在訓練集上的效果很好,在測試集上的預測效果很差 數據有噪聲 訓練數據不足,有限的訓練數據 訓練模型過度導致模型非常復雜3.2 如何避免過擬合問題? 3.3 什么是機器學習的欠擬合?產生原…

D4890可應用在對講機上,采用 SOP8/MSOP8兩種封裝形式

D4890 目前客戶主要使用在對講機上&#xff0c;電壓范圍2.2V &#xff5e; 5.5V之間&#xff0c;輸出功率&#xff08;THDN1%&#xff09;1.0W/8Ω 5.0V。采用 SOP8/MSOP8兩種封裝形式。 2、推薦的應用線路圖如下&#xff1a; 3、實際測試輸出波形如下&#xff08;VCC4.5V&…

Web Component 轉圖片

一、HTML 轉圖片 目前&#xff0c;常見的開源的能夠將 HTML 轉換為圖片有html2canvas、dom-to-image&#xff0c;大部分場景下&#xff0c;這些開源庫都能很友好的處理。 HTML 轉圖片的實現原理&#xff0c;通常分為兩種&#xff1a;svg 與 canvas。今天主要討論下 svg 的場景…

Flutter中使用Dio庫封裝網絡請求服務工具類

在Flutter應用程序中&#xff0c;進行網絡請求是非常常見的任務。Dio是一個強大的、易于使用的Dart包&#xff0c;用于處理HTTP請求。本篇博客將介紹如何封裝Dio庫&#xff0c;以及如何在Flutter應用中進行網絡請求并取消請求。 什么是Dio&#xff1f; Dio是一個基于Dart語言…

解決android studio build Output中文亂碼

1.效果如下所示&#xff1a; 代碼運行報錯的時候&#xff0c;Build Output報的錯誤日志中中文部分出現亂碼&#xff0c;導致看不到到底報的什么錯。 2.解決辦法如下&#xff1a; 點擊Android studio開發工具欄的Help-Edit Custom VM Options....&#xff0c;Android studio會…

springboot微服務中集成了mybatis的服務引入了其他集成了mybatis的服務此時調用引入的服務中的某個mapper接口時報沒有注入

在啟動類上加引入的服務中的mapper路徑&#xff0c;在配置文件中將mapperLocations的值改為classpath*:mapper/.xml&#xff1a; MapperScan(basePackages {"com.ruoyi..mapper"}) 和 mapperLocations: classpath*:mapper/*.xml 是 MyBatis 在 Spring Boot 中配置 M…

AutoGPT實現原理

AutoGPT是一種利用GPT-4模型的自動化任務處理系統&#xff0c;其主要特點包括任務分配、多模型協作、互聯網訪問和文件讀寫能力以及上下文聯動記憶性。其核心思想是通過零樣本學習&#xff08;Zero Shot Learning&#xff09;讓GPT-4理解人類設定的角色和目標&#xff0c;并通過…

端口號被占用時的解決辦法

1、查看端口占用的進程號 netstat -ano |findstr 8080 2、 找到占用端口的程序 tasklist |findstr 2264 3、kill端口 taskkill /pid 2264 /f

文物預防性保護方案整體結構及軟件介紹

?文物預防性保護監測與調控系統整體是構架在商業級技術平臺上的多層綜合性應用,采用分布式部署的模塊化設計,以智能監測終端及高精傳感器為核心的感知系統。系統通過以下的層次結構協同工作完成全面的監控與調控功能&#xff1a; 1)系統依靠文物監測調控模型作為運行核心&…

基于springboot+vue的校園愛心捐贈互助管理系統(源碼+論文)

目錄 前言 一、功能設計 二、功能實現 三、庫表設計 四、論文 前言 隨著經濟水平和生活水平的提高在校大學生在校需要處理的物品也在不斷增加&#xff0c;同時校園內還存在很多貧困生&#xff0c;可以通過線上平臺實現資源的整合和二次利用&#xff0c;通過線上平臺求助信…

護眼燈有效果嗎怎么樣?推薦五款值得入手的護眼臺燈

隨著護眼臺燈被越來越多的人解鎖新的護眼攻略&#xff0c;它的產品熱度也越來越高&#xff0c;而且光線柔和&#xff0c;是一款非常不錯的照明用具。但是也有不少用戶反饋買到的護眼臺燈效果不好&#xff0c;有時候還會覺得刺眼&#xff0c;有些不合格的臺燈使用時間一久還會散…

動態IP代理技術在網絡爬蟲中的實際使用

目錄 一、動態IP代理技術概述 二、動態IP代理技術的優勢 三、動態IP代理技術的實際應用 四、注意事項 五、案例分析 六、結論 隨著互聯網的迅猛發展&#xff0c;網絡爬蟲成為了獲取信息、分析數據的重要工具。然而&#xff0c;在進行大規模爬取時&#xff0c;爬蟲常常面臨…

gin gorm學習筆記

代碼倉庫 https://gitee.com/zhupeng911/go-advanced.git https://gitee.com/zhupeng911/go-project.git 1. gin介紹 Gin 是使用純 Golang 語言實現的 HTTP Web框架&#xff0c;Gin接口設計簡潔&#xff0c;提供類似Martini的API&#xff0c;性能極高&#xff0c;現在被廣泛使用…

《C語言缺陷和陷阱》-筆記

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據總結 前言 在這一節中&#xff0c;我們將探索對記號的意義的普遍的誤解以及記號和組成它們的字…