🚨 setStateAction νƒ€μž…μ—λŸ¬

🚨 μ—λŸ¬ λ°œμƒ

todolistλ₯Ό λ§Œλ“œλŠ”λ° κΆκΈˆν•œ 점이 생겼닀.

const [createInput, setCreateInput] = useState("");

const onChangeCreateInput = (e: ChangeEvent<HTMLInputElement>) => {
  const value = e.target;
  setCreateInput(value);
  // Error: Argument of type 'EventTarget & HTMLInputElement' is not assignable to parameter of type 'SetStateAction<string>'.ts(2345)
};

value의 μ€‘κ΄„ν˜Έμ˜ μ˜λ―Έκ°€ κΆκΈˆν•΄μ‘Œλ‹€.

μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ 객체둜 μ„ μ–Έν–ˆμ„λ•ŒλŠ” μ—λŸ¬κ°€ μ•ˆλ‚˜λŠ”λ° μ€‘κ΄„ν˜Έλ₯Ό μ—†μ• λ‹ˆκΉŒ μ—λŸ¬κ°€ λ°œμƒν–ˆλ‹€.

해결을 μœ„ν•΄ okky에 μ§ˆλ¬Έν•΄λ³΄μ•˜λ‹€.

❔ μ—λŸ¬ 원인

EventTarget & HTMLInputElement νƒ€μž…μ˜ 전달 인자(ν˜ΈμΆœν•  λ•Œ)λŠ” SetStateAction의 νƒ€μž…μ˜ νŒŒλΌλ―Έν„°(μ •μ˜ν•  λ•Œ)에 ν• λ‹Ήν•  수 μ—†λ‹€.

즉, 이벀트 객체인 e의 νƒ€μž…κ³Ό setCreateInput의 νŒŒλΌλ―Έν„°μ˜ νƒ€μž…μ΄ λ‹€λ₯΄λ‹€λŠ” 것이닀.

μ—λŸ¬κ°€ λ°œμƒν•œ λΆ€λΆ„μ˜ μ½”λ“œμ—μ„œ

e.target의 νƒ€μž…μ„ 받은 value의 νƒ€μž…μ€ EventTarget & HTMLInputElement인데,

μ‚¬μš©ν•˜λŠ” μƒνƒœ λ³€κ²½ ν•¨μˆ˜ setCreateInput의 νƒ€μž…μ΄ SetStateAction<string> 즉, string이기 λ•Œλ¬Έμ— νƒ€μž…μ—λŸ¬κ°€ λ°œμƒν•œ 것이닀.

πŸ”¨ μ—λŸ¬ ν•΄κ²°

const{ value } = e.target은 const value = e.target.value와 같은 μ˜λ―Έμ΄λ‹€.

νƒ€μž…μ„ 맞좰 μ“°κΈ° μœ„ν•΄μ„œλŠ” 객체 ꡬ쑰 λΆ„ν•΄ ν• λ‹Ή 문법을 μ‚¬μš©ν•˜μ—¬ 이벀트 객체 μ•ˆμ˜ 값을 κΊΌλ‚΄μ„œ 써야 ν•œλ‹€.

좜처

OKKY

Leave a comment