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

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

import { useEffect, useRef } from 'react';const useTimeout = (callback, delay) => {  const savedCallback = useRef(callback);  const timeoutId = useRef(null);  useEffect(() => {    savedCallback.current = callback;  }, [callback]);  useEffect(() => {    if (timeoutId.current) {      clearTimeout(timeoutId.current);    }    timeoutId.current = setTimeout(() => savedCallback.current(), delay);    return () => {      clearTimeout(timeoutId.current);    };  }, [delay]);  return timeoutId.current;};export default useTimeout;

Usage:

import React from 'react';import useTimeout from './useTimeout';const MyComponent = () => {  const [count, setCount] = React.useState(0);  useTimeout(() => {    setCount(count + 1);  }, 5000);  return (    <div>      <p>Count: {count}</p>      <button onClick={() => setCount(count + 1)}>Increment</button>    </div>  );};