この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿または 公式回答ページからも解答例が見つかるかもしれませんよ。

BFE.devでのAI解答例 - React コーディング問題
8. useDebounce()

以下は、useDebounceフックの実装例です。

import { useState, useEffect } from 'react'function useDebounce(value: any, delay: number) {  const [debouncedValue, setDebouncedValue] = useState(value)  useEffect(() => {    const timeoutId = setTimeout(() => {      setDebouncedValue(value)    }, delay)    return () => {      clearTimeout(timeoutId)    }  }, [value, delay])  return debouncedValue}

このフックは、valueが変更されるたびに、1秒のディレイをかけてdebouncedValueを更新します。useEffect()フックにより、前回の更新が完了してから次のタイマーをセットするようになっているため、値が更新されるたびにタイマーが再セットされます。そして、更新があった場合は、クリアされるタイマーがセットされ、ダブルクリックなどで早期に入力が終わった場合は、セットされたタイマーがクリアされます。