← inaro.devAI駆動開発 学習ツール
応用

実践:AIのReactコードをレビューする

なぜ学ぶか: Phase 02の総仕上げです。ここまで学んだ知識を使って、AIが生成しがちな「動くけど問題のあるコード」をレビューします。下の例には問題が3つ隠れています。まず自分で探してみてください。

まずはこの例を見てみましょう

function TodoApp({ initialTodos }: Props) {
  const [todos, setTodos] = useState(initialTodos);
  const [count, setCount] = useState(0);                    // 【?】

  useEffect(() => { setCount(todos.length); }, [todos]);    // 【?】

  const addTodo = (text: string) => {
    todos.push({ id: String(Date.now()), text });           // 【?】
    setTodos(todos);
  };

  return (
    <ul>
      {todos.map((todo, index) => (
        <li key={index}>{todo.text}</li>                     // 【?】
      ))}
    </ul>
  );
}

答えは下の解説で。①countは計算で出せる ②pushは直接変更 ③keyがindex、の3点です。

問題①:いらないstateとuseEffect

countはtodos.lengthでその場で計算できます。stateもuseEffectも不要 — AIの過剰コードの代表です。

問題②:stateの直接変更

todos.push(...)は元の配列を直接変えています。Reactが変更に気づけないので、setTodos([...todos,新要素])と新しい配列を作ります。

問題③:key={index}

並べ替えや削除で表示が乱れます。key={todo.id}に直します。

指摘は「理由+依頼」で

「keyがindexだと削除時に乱れるので、todo.idに変えてください」— 理由を添えると、AIは正しく直せます。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。