import { useState } from 'react' const lessons = ['stateの更新', 'propsで値を渡す', 'Effectと通信'] const choices = ['入力するたびに結果も変わる', '検索を確定するまで結果は変わらない', '用途を決めてから選ぶ'] function Results({ items }: { items: string[] }) { return

子コンポーネントが受け取る結果

{items.length === 0 &&

一致する教材はありません。

}
} export function SearchStateLesson() { const [prediction, setPrediction] = useState(null) const [draft, setDraft] = useState('') const [submitted, setSubmitted] = useState('') const [revealed, setRevealed] = useState(false) const [reason, setReason] = useState('') const results = lessons.filter(lesson => lesson.toLowerCase().includes(submitted.toLowerCase())) return

Reactの実装を読む

検索の仕様を、stateとpropsに落とし込む

ここでは入力途中のdraftと、検索時に確定するsubmittedを別々のstateに持ちます。結果はsubmittedから計算して、子へpropsで渡します。ボタンで確定する仕様を、どの値と処理で実現するか確認します。

別の検索画面を作るなら、どちらの仕様を選ぶ?
{choices.map(choice => )}
{ event.preventDefault(); setSubmitted(draft.trim()) }}>
setDraft(event.target.value)} placeholder="stateと入力" className="min-w-0 flex-1 rounded-lg border border-slate-300 bg-white p-3" />
入力中のstate:draft
{draft || '(空欄)'}
確定済みのstate:submitted
{submitted || '(空欄)'}

入力中と確定済みの値を上の表示で確認できます。入力のたびに絞る仕様へ変えるなら、resultsの計算元を何に変え、どのstateが不要になるでしょう?