useStateconstを変更時の入力値に設定する方法
Dec 11 2020
次のような機能コンポーネントで変数を作成したとしましょう。
const [quizName, setQuizName] = useState("");
ユーザーが入力に入力した内容に基づいて、この値を変更するにはどうすればよいですか。私の考えはこれでした:
<input
value={quizName}
onChange={setQuizName(value)}
></input>
しかし、それは値が何であるかを知りません、どうすれば私のquizName変数に値を取得できますか?
回答
1 bakar_dev Dec 11 2020 at 19:30
<input
value={quizName}
onChange={(e)=>setQuizName(e.target.value)}>
</input>
1 a_m_dev Dec 11 2020 at 19:40
最も簡単な方法は、次のような入力のonChangeに関数を含めることです。
<input value={quizName} onChange={(e)=>setQuizName(e.target.value)} />
大丈夫ですが、神のためにこれをやめてください!
理由は次のとおりです。
入力が変更されるたびに関数を作成して実行します。これはパフォーマンスバイスでは問題ありません!特に、コンポーネントのあらゆる場所で大規模なアプリでそれを行う場合は!
あなたがする必要があるのはuseCallback
、以下のように使用することです:
const [quizName, setQuizName] = useState("");
const handleInputChange = useCallback((e) => {
setQuizName(e.target.value)
}, [setQuizName])
return (
<input value={quizName} onChange={handleInputChange} />
)
これuseCallback
がinreactドキュメントの説明です:
https://reactjs.org/docs/hooks-reference.html#usecallback
SinanYaman Dec 11 2020 at 19:30
onChange={setQuizName(value)}
このように関数を呼び出すと、変更を待たずに実行されます。
onChange={(e) => setQuizName(e.target.value)}
それを行う正しい方法です