Created
October 22, 2021 12:15
-
-
Save aidiary/d1d8e0bb3eb39d57f99e1361585f5db2 to your computer and use it in GitHub Desktop.
useRefでinputの内容を取得する
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { useRef, useState } from 'react'; | |
import Button from '../UI/Button'; | |
import Card from '../UI/Card'; | |
import ErrorModal from '../UI/ErrorModal'; | |
import classes from './AddUser.module.css'; | |
const AddUser = (props) => { | |
const nameInputRef = useRef(); | |
const ageInputRef = useRef(); | |
const [error, setError] = useState(); | |
const addUserHandler = (event) => { | |
event.preventDefault(); | |
const enteredName = nameInputRef.current.value; | |
const enteredUserAge = ageInputRef.current.value; | |
if (enteredName.trim().length === 0 || enteredUserAge.trim().length === 0) { | |
setError({ | |
title: 'Invalid input', | |
message: 'Please enter a valid name and age (non-empty values).', | |
}); | |
return; | |
} | |
if (+enteredUserAge < 1) { | |
setError({ | |
title: 'Invalid age', | |
message: 'Please enter a valid age (> 0).', | |
}); | |
return; | |
} | |
props.onAddUser(enteredName, enteredUserAge); | |
nameInputRef.current.value = ''; | |
ageInputRef.current.value = ''; | |
}; | |
const errorHandler = () => { | |
setError(null); | |
}; | |
return ( | |
<React.Fragment> | |
{error && ( | |
<ErrorModal | |
title={error.title} | |
message={error.message} | |
onConfirm={errorHandler} | |
/> | |
)} | |
<Card className={classes.input}> | |
<form onSubmit={addUserHandler}> | |
<label htmlFor='username'>Username</label> | |
<input id='username' type='text' ref={nameInputRef} /> | |
<label htmlFor='age'>Age (Years)</label> | |
<input id='age' type='number' ref={ageInputRef} /> | |
<Button type='submit'>Add User</Button> | |
</form> | |
</Card> | |
</React.Fragment> | |
); | |
}; | |
export default AddUser; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment