리액트

[React]form태그 비제어

민ズl 2024. 11. 6. 20:27

전에 프로젝트에서 form태그에 핸들링을 useState로 관리했는데, 이를 더 간략하게 해주는게 있었따!!!

//전
const initialInputValue = {
  country: "",
  gold: 0,
  silver: 0,
  bronze: 0,
};
const handlSubmitToAdd = (e) => {
    e.preventDefault();
    const newValue = {
      ...overallInputData,
      id: Date.now(),
    };
    setSavedData([...savedData, newValue]);
    initState();
  };

  const handleChange = (e) => {
    setOverallInputData({
      ...overallInputData,
      [e.target.name]: e.target.value,
    });
  };
  ...
  <input
    key={i}
    type={i === 0 ? "text" : "number"}
    value={overallInputData[title]}
    name={title}
    maxLength={i === 0 ? null : 2}
    onChange={handleChange}
    onInput={i === 0 ? null : handleInput}
    placeholder={title}
    required
  />

 

☝️이랬던 코드를 newForm객체와 reset()메소드를 사용하여 밑에 코드처럼 간략하게 바꿨다!

//후
const handlSubmitToAdd = (e) => {
    e.preventDefault();

    const fd = new FormData(e.target);
    const data = Object.fromEntries(fd.entries());

    const newValue = {
      ...data,
      id: Date.now(),
    };
    setSavedData([...savedData, newValue]);

    e.target.reset(); 
  };
  ...
  <input
    key={i}
    type={i === 0 ? "text" : "number"}
    name={title}
    maxLength={i === 0 ? null : 2}
    onInput={i === 0 ? null : handleInput}
    placeholder={title}
    required
  />

'리액트' 카테고리의 다른 글

[React]Redux  (0) 2024.11.11
[React]context api  (0) 2024.11.11
[React]memo(React.memo), useCallback,useMemo  (0) 2024.11.05
[React]useContext  (0) 2024.11.04
[React]useRef  (0) 2024.11.04