κΈ°μ‘΄ JSμ²λΌ μ§μ DOMμ μ κ·Όνλ κ²μ΄ React μ€λ½μ§ μλ€. λ°λΌμ μ¬λ¬ hook, reducx μ¬μ© ( JS λ¬Έλ²μ΄ μ ν΄μ Έμμ§ μμ κ²½μ°μ μμ μ½λ λ°©μμ΄ λ무 λ€μν λ¨μ . )
β μ΄λ₯Ό μν useRef(); μ¬μ©
import React, { useRef, useState } from 'react'
import styles from './AddUsers.module.css';
import Button from '../UI/Button';
import Card from '../UI/Card';
import ErrorModal from '../UI/Modal/ErrorModal';
const AddUsers = ({onAddUser}) => {
// μλ¬ μν κ΄λ¦¬(μ λͺ©, λ΄μ©) - μλ¬ λͺ¨λ¬μ°½ λμ€λ 쑰건문 λΆμ¬λ₯Ό μν !
const [error, setError] = useState(null);
**// ββuseRefλ‘ DOM μ‘°μνκΈ°
const usernameRef = useRef();
const ageRef = useRef();**
// μ μ λ±λ‘ ν¨μ
const userSubmitHandler = (e) => {
e.preventDefault();
**const userValue = {
// μμ useRef()λ‘ λ§λ€μ΄ λμ νμ¬κ° μ¬μ©νλ λ°©λ²
username: usernameRef.current.value,
age: ageRef.current.value
};**
// μ
λ ₯κ° κ²μ¦ - 1. κ³΅λ°±μΌ λ
if (userValue.username.trim() === '' || userValue.age.trim() === '') {
setError({
title: 'μ ν¨νμ§ μμ μ
λ ₯κ° μ
λλ€.',
message: 'μ
λ ₯κ°μ 곡백μΌλ‘ μμ±νλ©΄ μλ©λλ€.'
});
return;
}
// 2. λμ΄κ° 0μ΄κ±°λ μμμΌ λ μ
λ ₯κ° κ²μ¦
if (+userValue.age < 1) {
setError({
title: 'μ ν¨νμ§ μμ λμ΄ λ²μ μ
λλ€.',
message: 'λμ΄λ 0μ΄λ μμκ° λ μ μμ΅λλ€.'
});
return;
}
// App.jsμμ μ μ μΆκ°νλ κ°μ²΄ κ°μ Έμ€κΈ°
onAddUser(userValue);
}
// νμ μ»΄ν¬λνΈ ErrorModalμκ² λͺ¨λ¬μ λ«λ 쑰건μ μννλ ν¨μ μ λ¬
const modalCloseHandler = () => {
// μ μ
λ ₯κ° κ²μ¦μμ trueκ° λ μνλ₯Ό λ€μ λλ €μ€μ λ«κΈ° !
setError(null);
};
return (
<>
{/* μλ¬κ° λμ΄ μλλ©΄ μλ¬ λͺ¨λ¬μ°½ 보μ¬μ§κ² ν΄λΌ - λͺ¨λ¬μ°½ λ«λ 쑰건 ν¨μ 보λ΄κΈ° */}
{error ? <ErrorModal onClose={modalCloseHandler} title={error.title} message={error.message}/> : ''}
<Card className={styles.input}>
<form onSubmit={userSubmitHandler}>
<label htmlFor='username'>μ΄λ¦</label>
<input
id='username'
type='text'
ref={usernameRef}
//onChange={usernameChangeHandler}
//value={userValue.username}
/>
<label htmlFor='age'>λμ΄</label>
<input
id='age'
type='number'
ref={ageRef}
//onChange={ageChangeHandler}
//value={userValue.age}
/>
<Button type='submit'>κ°μ
νκΈ°</Button>
</form>
</Card>
</>
)
}
export default AddUsers
νΉμ νμ΄μ§μ λ€μ΄μ€λ©΄ 맨μ²μ νλ©΄μ λ λλ§ν κ²μ 보μ¬μ£Όλ μν μ νλ€.
λ λλ§μ΄ λλ ν λΉλκΈ°μ²λ¦¬λ₯Ό νμ¬ λκΈ, κ²μκΈ, λ‘κ·ΈμΈμ°½ λ± CRUDκ° κ·Όλ³ΈμΈ νμ΄μ§μ νμν ν μ΄λ€.
useReducer() β
useContext() β