κΈ°μ‘΄μ useState Hook μ μ¨μ ꡬννλ λ‘κ·ΈμΈ id & password μ ν¨μ± κ²μ¬, μ¬μ©μ μ λ ₯ λ°μ΄ν° μ μ₯ λ° λ‘κ·ΈμΈ λ²νΌ νμ±ν κΈ°λ₯ 리ν©ν λ§
ππ»ππ»ππ» κΈ°μ‘΄ μ½λ ππ»ππ»ππ»
function Login() {
const [inputId, SetInputId] = useState(false);
const [inputPassword, SetInputPassword] = useState(false);
const navigate = useNavigate();
const goToMain = () => {
navigate("/Main");
};
<input
type="text"
className="loginId"
placeholder="μ νλ²νΈ, μ¬μ©μ μ΄λ¦ λλ μ΄λ©μΌ"
onChange={(e) => SetInputId(e.target.value.includes("@"))}
/>
<input
type="password"
className="loginPassword"
placeholder="λΉλ°λ²νΈ"
onChange={(e) => SetInputPassword(e.target.value.length > 5)}
/>
<button
className="loginBtn"
disabled={!inputId || !inputPassword}
onClick={goToMain}
/>
μμ βΌοΈ
- λΆνμν useState hook μ§μ
=> κΈ°μ‘΄μ id input κ³Ό password input μ κ°κ° λ°λ‘ useState λ₯Ό μΌμ§λ§, κ°μ²΄λ‘ λ΄μ useState hook νλ²λ§ μ¬μ©- Inline ν¨μ μ§μ
=> κΈ°μ‘΄μ button νκ·Έ μμ μ΄λ²€νΈλ₯Ό ν¨μλ₯Ό μ μμ§λ§, λ°λ‘ λ³μλ‘ μ‘°κ±΄μ μ§μ ν΄μ μ¬μ©
function Login() {
const [values, setValues] = useState({ Id: ' ', Password: ' ' });
const handleBtn = !(values.Id.includes('@') && values.Password.length > 4);
const handleInput = e => {
const { name, value } = e.target;
setValues({ ...values, [name]: value });
};
const navigate = useNavigate();
const goToMain = () => {
navigate('/Main-hyelinPark');
};
return (
<div className="Login">
<div className="loginBox">
<p className="logo">Westagram</p>
<form className="inputBox">
<input
type="text"
name="Id"
value={values.Id}
className="loginId"
placeholder="μ νλ²νΈ, μ¬μ©μ μ΄λ¦ λλ μ΄λ©μΌ"
onChange={handleInput}
/>
<input
type="password"
name="Password"
value={values.Password}
className="loginPassword"
placeholder="λΉλ°λ²νΈ"
onChange={handleInput}
/>
<button className="loginBtn" onClick={goToMain} disabled={handleBtn}>
λ‘κ·ΈμΈ
</button>
πΉuseEffect() μ¬μ©νκΈ°
- useEffect() hook μ side effect λ₯Ό μ²λ¦¬νκΈ° μν΄ μ¬μ©νλ ν¨μ.
- useState() hook μ μ¬μ©ν λλ state κ° λ³ν λλ§λ€ re-rendering λλ€. νμ§λ§ useEffect λ input μ λ³νκ° μΌμ΄λ¬μ λλ§ re-rendering λλ€.
- useEffect (handleBtn, [values.Id, values.Password])
=> [values.id, values.Password] κ° λ³νλ©΄ handleBtn ν¨μλ₯Ό μ€νμμΌλΌ
useEffect () μ¬μ©ν΄μ μ½λλ₯Ό λ€μ μ§°μ λ
function Login() {
const [values, setValues] = useState({ Id: "", Password: "" });
const [activeBtn, setActiveBtn] = useState(false);
useEffect(() => {
const handleBtn = !(values.Id.includes("@") && values.Password.length > 4);
const handleBtn = !(values.Id.includes("@") && values.Password.length > 4);
setActiveBtn(handleBtn);
}, [values.Id, values.Password]);
βοΈ κΆκΈν μ μ λ€μμ£Όμ λ¬Όμ΄λ΄μΌκ² λ€...