- ReactJS 教程
- ReactJS - 首頁
- ReactJS - 簡介
- ReactJS - 路線圖
- ReactJS - 安裝
- ReactJS - 特性
- ReactJS - 優缺點
- ReactJS - 架構
- ReactJS - 建立 React 應用
- ReactJS - JSX
- ReactJS - 元件
- ReactJS - 巢狀元件
- ReactJS - 使用新建立的元件
- ReactJS - 元件集合
- ReactJS - 樣式
- ReactJS - 屬性 (props)
- ReactJS - 使用屬性建立元件
- ReactJS - props 驗證
- ReactJS - 建構函式
- ReactJS - 元件生命週期
- ReactJS - 事件管理
- ReactJS - 建立一個事件感知元件
- ReactJS - 在 Expense Manager 應用中引入事件
- ReactJS - 狀態管理
- ReactJS - 狀態管理 API
- ReactJS - 無狀態元件
- ReactJS - 使用 React Hooks 進行狀態管理
- ReactJS - 使用 React Hooks 進行元件生命週期管理
- ReactJS - 佈局元件
- ReactJS - 分頁
- ReactJS - Material UI
- ReactJS - Http 客戶端程式設計
- ReactJS - 表單程式設計
- ReactJS - 受控元件
- ReactJS - 非受控元件
- ReactJS - Formik
- ReactJS - 條件渲染
- ReactJS - 列表
- ReactJS - Keys
- ReactJS - 路由
- ReactJS - Redux
- ReactJS - 動畫
- ReactJS - Bootstrap
- ReactJS - 地圖
- ReactJS - 表格
- ReactJS - 使用 Flux 管理狀態
- ReactJS - 測試
- ReactJS - CLI 命令
- ReactJS - 構建和部署
- ReactJS - 示例
- Hooks
- ReactJS - Hooks 簡介
- ReactJS - 使用 useState
- ReactJS - 使用 useEffect
- ReactJS - 使用 useContext
- ReactJS - 使用 useRef
- ReactJS - 使用 useReducer
- ReactJS - 使用 useCallback
- ReactJS - 使用 useMemo
- ReactJS - 自定義 Hooks
- ReactJS 高階
- ReactJS - 可訪問性
- ReactJS - 程式碼分割
- ReactJS - 上下文
- ReactJS - 錯誤邊界
- ReactJS - 轉發 Refs
- ReactJS - 片段
- ReactJS - 高階元件
- ReactJS - 整合其他庫
- ReactJS - 最佳化效能
- ReactJS - Profiler API
- ReactJS - 門戶
- ReactJS - 無 ES6 (ECMAScript) 的 React
- ReactJS - 無 JSX 的 React
- ReactJS - 調和
- ReactJS - Refs 和 DOM
- ReactJS - 渲染 Props
- ReactJS - 靜態型別檢查
- ReactJS - 嚴格模式
- ReactJS - Web Components
- 其他概念
- ReactJS - 日期選擇器
- ReactJS - Helmet
- ReactJS - 內聯樣式
- ReactJS - PropTypes
- ReactJS - BrowserRouter
- ReactJS - DOM
- ReactJS - 走馬燈
- ReactJS - 圖示
- ReactJS - 表單元件
- ReactJS - 參考 API
- ReactJS 有用資源
- ReactJS - 快速指南
- ReactJS - 有用資源
- ReactJS - 討論
ReactJS - useDebugValue 鉤子
useDebugValue 鉤子是 React 的一個工具,用於在 React DevTools 中顯示自定義鉤子的自定義標籤和值。這對於除錯和提供有關我們自己鉤子的更多資訊非常方便。
語法
useDebugValue(value, formatFn);
引數
value − 這是我們想要顯示的值。它可以是任何 JavaScript 值,例如文字、整數或物件,也可以是函式。
formatFn − 這是一個函式,它接收一個值作為引數,並返回一個表示專案標籤或描述的字串。我們還可以向值新增自定義標籤。
返回值
鉤子 'useDebugValue' 不返回任何值。
參考
為了顯示可讀的除錯值,我們可以在自定義 Hook 的頂層呼叫 'useDebugValue' −
import { useDebugValue, useState } from 'react';
function useCounter() {
const [count, setCount] = useState(0);
// Display the count and a status message
useDebugValue(count, (count) => `Count: ${count}, Status: ${count === 0 ? 'Empty' : 'Not Empty'}`);
const increment = () => setCount(count + 1);
const decrement = () => setCount(count - 1);
return { count, increment, decrement };
}
示例
我們可以透過兩種不同的方式使用此鉤子。首先,我們可以透過向自定義 Hook 新增標籤來使用它,其次,我們可以透過延遲除錯值的格式化來使用它。因此,我們將逐一檢視這兩個選項。
示例 - 向自定義 Hook 新增標籤
為了顯示可讀的除錯值,我們將在自定義 Hook 的頂層呼叫 useDebugValue。
import { useDebugValue } from 'react';
function signInStatus() {
// ...
useDebugValue(isSignIn ? 'SignIn' : 'Signout');
}
在此示例中,我們將根據使用者的身份驗證狀態使用 useDebugValue 鉤子顯示自定義標籤。
useAuthStatus.js
import { useDebugValue } from "react";
export function useAuthStatus() {
const isAuthenticated = checkAuthentication();
// Use the useDebugValue hook
useDebugValue(isAuthenticated ? "Authenticated" : "Not Authenticated");
return isAuthenticated;
}
function checkAuthentication() {
// Checking authentication status of the user
return Math.random() < 0.5; // Authentication status will be False
// return Math.random() > 0.5; // Authentication status will be True
}
App.js
import { useAuthStatus } from "./useAuthStatus.js";
function AuthStatusComponent() {
const isAuthenticated = useAuthStatus();
return (
<div>
<h1>{isAuthenticated ? "Authenticated" : "Not Authenticated"}</h1>
</div>
);
}
export default function App() {
return <AuthStatusComponent />;
}
輸出
示例 - 延遲除錯值格式化
作為 useDebugValue 鉤子的第二個引數,我們還可以指定一個格式化函式。
以下示例中的 useDateValue 自定義鉤子將 useDebugValue 鉤子與 formatDateString 格式化方法結合使用。這消除了在每次渲染時對 Date 變數使用 toDateString() 的需要。此技術使程式碼更高效。由於使用了 useDebugValue 鉤子,因此只有在檢查元件時才會呼叫 formatDateString 方法。
useDateValue.js
import { useDebugValue } from 'react';
export function useDateValue(date) {
// Define a formatting function that formats the Date value
const formatDateString = (date) => date.toDateString();
// Use the useDebugValue hook with the formatting function
useDebugValue(date, formatDateString);
return date;
}
App.js
import { useDateValue } from './useDateValue.js';
function DateComponent() {
const currentDate = useDateValue(new Date());
return (
<div>
<h1>Current Date: {currentDate.toDateString()}</h1>
</div>
);
}
export default function App() {
return <DateComponent />;
}
輸出
Current Date: Wed Oct 11 2023
示例 - 計數器應用
因此,我們可以新增 useDebugValue 以在除錯時以更具資訊的方式顯示計數。useDebugValue 鉤子對於在除錯期間提供有關自定義鉤子或元件的值的其他資訊很有用。
import React, { useState, useDebugValue } from 'react';
function App() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
const decrement = () => {
setCount(count - 1);
};
// Display the count value in a more informative way for debugging
useDebugValue(`Count: ${count}`);
return (
<div>
<h1>Counter App</h1>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
}
export default App;
輸出
注意
useDebugValue 鉤子是幫助開發人員理解和除錯自身程式碼的有用工具。但是,務必謹慎使用它並瞭解其侷限性。它是我們工具箱中的一個工具,我們應該謹慎使用它以避免問題並使我們的程式碼更易於處理。