ahooks.js:一款強大的React Hooks庫及其API使用教程(三)

    • 一、ahooks.js簡介
    • 二、ahooks.js安裝
    • 三、繼續ahooks.js API的介紹與使用教程
      • 41. useAsyncEffect
      • 42. useDebounceEffect
      • 43. useDebounceFn
      • 44. useThrottleFn
      • 45. useThrottleEffect
      • 46. useDeepCompareEffect
      • 47. usePrevious
      • 48. useRafState
      • 49. useSafeState
      • 50. useGetState

一、ahooks.js簡介

ahooks是一款由阿里巴巴開發團隊設計的React Hooks庫,提供了一系列實用的React Hooks,以便開發者更好地使用React的功能。ahooks的設計原則是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同時保留最大的使用自由度。

二、ahooks.js安裝

使用npm或yarn安裝ahooks:

npm install ahooks
# 或者
yarn add ahooks

三、繼續ahooks.js API的介紹與使用教程

API介紹合集:

  • ahooks.js:一款強大的React Hooks庫及其API使用教程(一)
  • ahooks.js:一款強大的React Hooks庫及其API使用教程(二)

41. useAsyncEffect

useAsyncEffect 是一個用于處理異步操作的 Hook,它可以在 effect 中使用 async/await。

    import { useAsyncEffect } from 'ahooks';function App() {useAsyncEffect(async () => {const data = await fetchData();console.log(data);}, []);return <div>...</div>;}

上述代碼中,useAsyncEffect接收一個異步函數和依賴數組作為參數。異步函數會在組件掛載后和依賴項改變后執行。

42. useDebounceEffect

useDebounceEffect 是一個在依賴項改變后延遲執行副作用的 Hook。

    import { useDebounceEffect } from 'ahooks';function App() {const [value, setValue] = useState('');useDebounceEffect(() => {console.log(value);}, [value], 500);return <input value={value} onChange={e => setValue(e.target.value)} />;}

上述代碼中,useDebounceEffect接收一個函數,依賴數組和延遲時間作為參數。函數會在依賴項改變后的指定延遲時間后執行。

43. useDebounceFn

useDebounceFn 是一個用于延遲函數執行的 Hook。

    import { useDebounceFn } from 'ahooks';function App() {const { run } = useDebounceFn(() => {console.log('Hello');}, 500);return <button onClick={run}>Say Hello</button>;}

上述代碼中,useDebounceFn接收一個函數和延遲時間作為參數,返回一個對象,該對象包含一個run方法,當調用這個方法時,會在指定延遲時間后執行傳入的函數。

44. useThrottleFn

useThrottleFn 是一個用于節流函數執行的 Hook。

    import { useThrottleFn } from 'ahooks';function App() {const { run } = useThrottleFn(() => {console.log('Hello');}, 500);return <button onClick={run}>Say Hello</button>;}

上述代碼中,useThrottleFn接收一個函數和延遲時間作為參數,返回一個對象,該對象包含一個run方法,當調用這個方法時,會以節流的方式執行傳入的函數。

45. useThrottleEffect

useThrottleEffect 是一個在依賴項改變后以節流方式執行副作用的 Hook。

    import { useThrottleEffect } from 'ahooks';function App() {const [value, setValue] = useState('');useThrottleEffect(() => {console.log(value);}, [value], 500);return <input value={value} onChange={e => setValue(e.target.value)} />;}

上述代碼中,useThrottleEffect接收一個函數,依賴數組和延遲時間作為參數。函數會在依賴項改變后以節流的方式執行。

46. useDeepCompareEffect

useDeepCompareEffect 是一個用于深度比較依賴項的 Hook,只有當依賴項深度比較改變時,才會執行副作用。

    import { useDeepCompareEffect } from 'ahooks';function App() {const [value, setValue] = useState({ key: 'value' });useDeepCompareEffect(() => {console.log(value);}, [value]);return <div>...</div>;}

上述代碼中,useDeepCompareEffect接收一個函數和依賴數組作為參數。函數只有在依賴項深度比較改變時才會執行。

47. usePrevious

usePrevious 是一個用于獲取上一個狀態或屬性的 Hook。

    import { usePrevious } from 'ahooks';function App() {const [count, setCount] = useState(0);const prevCount = usePrevious(count);return (<div><p>Now: {count}, before: {prevCount}</p><button onClick={() => setCount(count + 1)}>Increment</button></div>);}

上述代碼中,usePrevious接收當前狀態或屬性作為參數,返回該狀態或屬性的上一個值。

48. useRafState

useRafState 是一個用于在下一個動畫幀中更新狀態的 Hook。

    import { useRafState } from 'ahooks';function App() {const [count, setCount] = useRafState(0);return (<div><p>{count}</p><button onClick={() => setCount(count + 1)}>Increment</button></div>);}

上述代碼中,useRafState接收初始狀態作為參數,返回當前狀態和一個設置函數。設置函數會在下一個動畫幀中更新狀態。

49. useSafeState

useSafeState 是一個安全的狀態 Hook,它可以確保在組件卸載后不會設置狀態。

    import { useSafeState } from 'ahooks';function App() {const [count, setCount] = useSafeState(0);return (<div><p>{count}</p><button onClick={() => setCount(count + 1)}>Increment</button></div>);}

上述代碼中,useSafeState接收初始狀態作為參數,返回當前狀態和一個設置函數。設置函數會確保在組件卸載后不會設置狀態。

50. useGetState

useGetState 是一個用于獲取當前狀態的 Hook,無論何時調用,都會返回最新的狀態。

    import { useGetState } from 'ahooks';function App() {const [count, setCount, getState] = useGetState(0);const handleDouble = () => {setCount(getState() * 2);};return (<div><p>{count}</p><button onClick={handleDouble}>Double</button></div>);}

上述代碼中,useGetState接收初始狀態作為參數,返回當前狀態,一個設置函數,和一個獲取當前狀態的函數。無論何時調用獲取狀態的函數,都會返回最新的狀態。

更多關于ahooks.js的API介紹,請查看專欄:ahooks.js:一款強大的React Hooks庫

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

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

相關文章

開源和自研——機器人

雙足機器人&#xff1a; MPC技術&#xff1a;封閉性非常高。沒有開源方案可抄。 因為開源&#xff0c;不需要從0構建。 這也是前兩年&#xff0c;國外一開源華為就遙遙領先。 射頻芯片/射頻天線&#xff1a;技術封閉。華為雖然做通信&#xff0c;但卻沒有攻破。 鴻蒙&#…

計算復雜度基礎

1. 抽象問題 抽象問題包括決策問題和優化問題 注意&#xff1a;描述中&#xff0c;I的縮寫是Instance&#xff0c;S的縮寫是Solution。 2. 決策問題 3. 優化問題 將一個優化問題轉換為決策問題后&#xff0c;不會變的更難。 \color {green}將一個優化問題轉換為決策問題后&…

【C++】int a;和int *p=new int;有什么區別?

2023年8月19日&#xff0c;周六早上 int a; 和 int *p new int; 之間有以下區別&#xff1a; 1. 內存分配方式&#xff1a;int a; 是在棧上分配內存&#xff0c;而 int *p new int; 是在堆上動態分配內存。 2. 生命周期&#xff1a;int a; 的生命周期與其所在的作用域相同&…

Python繪圖系統6:自定義坐標列表控件

文章目錄 自定義坐標列表控件顯示和隱藏加載按鈕坐標設置控件的顯示和隱藏源代碼 Python繪圖系統&#xff1a; 基礎&#xff1a;將matplotlib嵌入到tkinter &#x1f4c8;簡單的繪圖系統 &#x1f4c8;數據導入&#x1f4c8;三維繪圖系統自定義控件&#xff1a;坐標設置控件&a…

【Spring Boot】JdbcTemplate數據連接模板 — JdbcTemplate入門

JdbcTemplate入門 本節從基礎的部分開始介紹什么是JDBC、什么是JdbcTemplate&#xff0c;然后介紹Spring Boot項目如何使用JdbcTemplate操作數據庫。 1.JdbcTemplate簡介 1.1 什么是JDBC JDBC&#xff08;Java Data Base Connectivity&#xff0c;Java數據庫連接&#xff0…

【二叉樹】100. 相同的樹

100. 相同的樹 解題思路 深度優先遍歷首先寫的就是遞歸結束條件當兩個節點都是null 直接返回true當只有其中一個節點是null 返回false當兩個節點的值不相等的時候 直接false然后兩棵樹的左節點 兩個樹的右節點 /*** Definition for a binary tree node.* public class TreeN…

android resoure資源圖片顏色值錯亂

最近androidstudio開發&#xff0c;添加一些顏色值或者drawable資源文件時&#xff0c;運行app,顏色值或者圖片對應不上&#xff0c;暫時找不到原因&#xff0c;望告知。 暫時解決方法&#xff1a;

鏈游再進化 Web3版CSGO來襲

過去幾年&#xff0c;游戲開發者們一直希望借Web3這個價值流通網絡&#xff0c;改造傳統游戲的經濟系統&#xff0c;將虛擬資產的掌管權交給用戶&#xff0c;讓資產自由地在市場流通。 Web3游戲發展史上&#xff0c;涌現過CryptoKitties、Axie Infinity兩大爆款&#xff0c;但…

【C++深入淺出】初識C++中篇(引用、內聯函數)

目錄 一. 前言 二. 引用 2.1 引用的概念 2.2 引用的使用 2.3 引用的特性 2.4 常引用 2.5 引用的使用場景 2.6 傳值、傳引用效率比較 2.7 引用和指針的區別 三. 內聯函數 3.1 內聯函數的概念 3.2 內聯函數的特性 一. 前言 上期說道&#xff0c;C是在C的基礎之上&…

onvif中imaging setting圖像畫質總結!

前言&#xff1a; 大家好&#xff0c;今天給大家來分享一篇關于圖像質量的內容&#xff0c;這個內容是我在做onvif中的imaging setting的時候&#xff0c;關注到里面有關于: brightness(亮度)color saturation(色彩飽和度)contrast(對比度)sharpness(銳度)white balance(白平衡…

C語言刷題指南(二)

&#x1f4d9;作者簡介&#xff1a; 清水加冰&#xff0c;目前大二在讀&#xff0c;正在學習C/C、Python、操作系統、數據庫等。 &#x1f4d8;相關專欄&#xff1a;C語言初階、C語言進階、C語言刷題訓練營、數據結構刷題訓練營、有感興趣的可以看一看。 歡迎點贊 &#x1f44d…

TDI(Time Delay Integration)

TDI&#xff08;Time Delay Integration&#xff09;是一種特殊的圖像采集技術&#xff0c;常用于線陣CCD&#xff08;Charge-Coupled Device&#xff09;相機。TDI技術可以在保持高分辨率的同時增強圖像的信噪比&#xff08;Signal-to-Noise Ratio, SNR&#xff09;&#xff0…

kubesphere 集成 sonar

文章目錄 安裝 helm通過 helm 安裝 sonar配置 SonarQube 服務器創建 SonarQube 管理員令牌SonarQube 配置添加到 ks-installer創建 Webhook 服務器將 SonarQube 服務器添加至 Jenkins將 sonarqubeURL 添加到 KubeSphere 控制臺重啟服務 為新項目創建 SonarQube Token 官方文檔&…

Threejs學習04——球緩沖幾何體環境光以及直線光源

實現隨機多個三角形隨機位置隨機顏色展示效果 這是一個非常簡單基礎的threejs的學習應用&#xff01;本節主要學習的是球面緩沖幾何體在環境光合直線光源下的效果&#xff0c;可以學習到環境光和直線光源的生成效果等功能&#xff01;主要使用的是球緩沖幾何體對象SphereGeome…

使用el-tree實現自定義樹結構樣式

實現效果: 直接上代碼: <template><div><div class"tops"><el-tree :default-expanded-keys"[1]" ref"myTree" :data"data" :props"defaultProps" node-click"handleNodeClick" highlight…

【uniapp】picker mode=“region“ 最簡單的省市區 三級聯動

省市區 picker template <picker mode"region" :value"date" class"u-w-440" change"bindTimeChange"><u--inputborder"bottom"class"u-fb u-f-s-28"placeholder"請選擇省市區"type"te…

第8章 對同步的硬件支持 摘錄

為了保證并行程序執行的正確性和高效性&#xff0c;構建一個共享存儲多處理器系統的硬件必須要解決緩存一致性、存儲一致性和同步原語的支持等問題。 被廣泛使用的同步原語包括鎖lock、柵欄barrier和點對點同步(signal和wait信號量)。舉例來說&#xff0c;鎖和柵欄被大量使用在…

ARM 作業1

一、思維導圖 二、 1. 2. .text 文本段 .globl _start 聲明_start:mov r0,#0mov r1,#0fun:cmp r1,#100bhi stopadd r0,r0,r1add r1,r1,#1b fun stop:b stop .end

C++函數模板和類模板

C另一種編程思想稱為泛型編程&#xff0c;主要利用的技術是模板 C提供兩種模板機制&#xff1a;函數模板和類模板 C提供了模板(template)編程的概念。所謂模板&#xff0c;實際上是建立一個通用函數或類&#xff0c; 其類內部的類型和函數的形參類型不具體指定&#xff0c; 用…

Axios使用CancelToken取消重復請求

處理重復請求&#xff1a;沒有響應完成的請求&#xff0c;再去請求一個相同的請求&#xff0c;會把之前的請求取消掉 新增一個cancelRequest.js文件 import axios from "axios" const cancelTokens {}export const addPending (config) > {const requestKey …