前提・実現したいこと
以前、react hook用のバリデーションライブラリを使用していたのですが、<Dialog>コンポーネントでは入力文字の取り出しがうまくいかなかったため、バリデーションを自作しようと思いました。
以下のコードのようにuseStateで切り替えようと思っているのですが、errMessageに文字列は入るもののUIとして表示されません。
わかる方がいましたらコメントお願いします。
該当のソースコード
const [err, setErr] = React.useState(false); //省略 var errMessage = ""; var error = err ? <span className={classes.validation}>{errMessage}</span> : <span></span>; const handleValidation = (e) => { let val = e.target.value; if (val == "") { errMessage = "入力必須"; console.log(errMessage); setErr(true); return; } else { errMessage = ""; setErr(false); return; } } return ( <div> <Button variant="outlined" color="primary" onClick={handleClickOpen}> {buttonName} </Button> <Dialog open={open} onClose={handleClose} aria-labelledby="form-dialog-title"> <DialogTitle id="form-dialog-title">{dialogTitle}</DialogTitle> <DialogContent> <DialogContentText> {dialogContent} </DialogContentText> <TextField autoFocus margin="dense" label={label} name="input" fullWidth inputRef={inputRef} onChange={handleValidation} //追加 /> {error} //追加 </DialogContent>
###コメントから
setError(err ? <span className={classes.validation}>{errMessage}</span> : <span></span>)
このように変更しましたが、
The above error occurred in the <FormDialog> component:
このようなエラーが出ます
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/23 03:28
2020/04/23 03:35
2020/04/23 03:42
2020/04/23 04:42