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κ°€ 근본인 νŽ˜μ΄μ§€μ— ν•„μš”ν•œ 훅이닀.