[React] Login Page Refactoring

πŸ‰effyΒ·2022λ…„ 1μ›” 21일

기쑴에 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]);


⁉️ κΆκΈˆν•œ 점은 λ‹€μŒμ£Όμ— 물어봐야겠닀...

profile
Je vais l'essayer

0개의 λŒ“κΈ€