前提・実現したいこと
Reactでテキストフィールドの文字列をバリデーションしたいと考えています。
ただ、10文字以上で保存ボタンをクリックできるようにしたいのですが、10文字ちょうどだとfalseの方になってしまいます。
また、defaultValueでテキストフィールドのテキストを管理しているのですが、保存時に''で初期化されず、そのままになってしまいす。
改善点がわかる方がいましたらコメントお願いします。
該当のソースコード
const [message, setMessage] = React.useState(''); const handleValidation = (e) => { setMessage(e.target.value); if (message.length < 10) { //10文字がこっちに入ってしまう setValidated(false); } else { setValidated(true); return; } }; const handleSubmit = () => { console.log(message); // ローカルストレージに保存 setMessage(''); //これが効かない。保存をクリックしてもメッセージが書かれたまま } const button = validated ? ( <Button onClick={handleSubmit} color="primary"> 保存 </Button> ) : ( <Button disabled color="primary"> 保存 </Button> ); return ( ... <TextField id="outlined-multiline-static" label="Message" multiline rows={4} variant="outlined" onChange={handleValidation} defaultValue={message} />
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/03 01:45
2020/06/03 01:54
2020/06/03 02:00
2020/06/03 02:02