Skip to content

Instantly share code, notes, and snippets.

@aidiary
Created October 22, 2021 12:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aidiary/d1d8e0bb3eb39d57f99e1361585f5db2 to your computer and use it in GitHub Desktop.
Save aidiary/d1d8e0bb3eb39d57f99e1361585f5db2 to your computer and use it in GitHub Desktop.
useRefでinputの内容を取得する
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