Movatterモバイル変換


[0]ホーム

URL:


Rooks
Rooks
Development & Debugging

useRenderCount

About

A simple debugging hook that tracks how many times a component has rendered. Useful for identifying unnecessary re-renders and optimizing component performance.

Examples

Basic example

import { useRenderCount }from "rooks";export default function App() {  const renderCount = useRenderCount();  return (    <div>      <h1>Component Render Count</h1>      <p>This component has rendered {renderCount} times</p>    </div>  );}

Debugging unnecessary re-renders

import { useState }from "react";import { useRenderCount }from "rooks";export default function App() {  const [count,setCount]= useState(0);  const [name,setName]= useState("");  const renderCount = useRenderCount();  return (    <div>      <h1>Debugging Re-renders</h1>      <p>Render count: {renderCount}</p>      <div>        <label>Counter: {count}</label>        <button onClick={()=> setCount(c => c+ 1)}>Increment</button>      </div>      <div>        <label>Name:</label>        <input          value={name}          onChange={(e)=> setName(e.target.value)}          placeholder="Type your name"        />      </div>      {renderCount> 10 && (        <div style={{color:'red'}}>          Warning: This component has re-rendered {renderCount} times!        </div>      )}    </div>  );}

Conditional behavior based on render count

import { useState, useEffect }from "react";import { useRenderCount }from "rooks";export default function App() {  const [data,setData]= useState(null);  const renderCount = useRenderCount();  // Only show loading indicator after first render  const showLoading = renderCount=== 1 && !data;  useEffect(()=> {    // Simulate data loading    const timer = setTimeout(()=> {      setData("Data loaded successfully!");    },2000);    return ()=> clearTimeout(timer);  }, []);  return (    <div>      <h1>Conditional Rendering Example</h1>      <p>Render #{renderCount}</p>      {showLoading&& <p>Loading...</p>}      {data&& <p>{data}</p>}      <button onClick={()=> setData(null)}>Reset Data</button>    </div>  );}

Arguments

This hook does not accept any arguments.

Returns

Return valueTypeDescription
renderCountNumberThe number of times the component has rendered (starts from 1)

Use Cases

  • Performance Debugging: Identify components that re-render too frequently
  • Development Tools: Build custom debugging components that show render information
  • Conditional Logic: Execute code only after a certain number of renders
  • Testing: Verify that optimizations are working correctly
  • Component Analysis: Understand how state changes affect component rendering

Notes

  • The render count starts from 1 (not 0) on the first render
  • Each call to the hook maintains its own independent render count
  • The count persists for the lifetime of the component
  • This hook is primarily intended for development and debugging purposes

Next

useWebLocksApi

Next

useWhyDidYouUpdate

On this page


[8]ページ先頭

©2009-2025 Movatter.jp