๋‹ด๊ณฐ๋†
minkyung.dev
๋‹ด๊ณฐ๋†
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (40)
    • ๐ŸŽ€ ํ”„๋กœ์ ํŠธ (6)
      • ์ธ์‚ฌ์ดํŠธ์•„์›ƒ (2)
      • ์บก์Šคํ†ค (2)
      • ์ž๋ฆฌ์–ด๋•Œ (1)
    • ๐Ÿ‘ฉ‍๐ŸŽค ํ”„๋ก ํŠธ์—”๋“œ (22)
      • react (5)
      • nextjs (4)
      • typescript (3)
      • javascript (4)
      • html (4)
      • css (2)
    • ๐Ÿงฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (2)
      • leetcode (1)
      • programmers (0)
    • ๐Ÿง  CS (1)
    • ๐ŸŽ ํšŒ๊ณ  (2)
    • private (0)
    • ๐Ÿง‘‍๐ŸŽค์ด์ง (0)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • HTML
  • leetcode
  • react-router
  • javascript
  • vsCode
  • Django
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋””ํ”„๋งŒ
  • ์ธํ”„๋ŸฐX๋””ํ”„๋งŒ
  • react
  • ESLint
  • github
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์ธํ”„๋Ÿฐ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๋‹ด๊ณฐ๋†

minkyung.dev

[React] useState ์ดˆ๊ธฐ๊ฐ’์ด undefined์ด ๋˜๋Š” ์˜ค๋ฅ˜
๐Ÿ‘ฉ‍๐ŸŽค ํ”„๋ก ํŠธ์—”๋“œ/react

[React] useState ์ดˆ๊ธฐ๊ฐ’์ด undefined์ด ๋˜๋Š” ์˜ค๋ฅ˜

2023. 1. 5. 19:44
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์ƒํ™ฉ

props๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์„ state์˜ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

ํ•˜์ง€๋งŒ state ๊ฐ’์€ props๋กœ ์ „๋‹ฌ๋œ ๊ฐ’ ๋‹ค๋ฅด๊ฒŒ undefined๋กœ ์„ค์ •๋˜์—ˆ๋‹ค.

์›์ธ

useState(initialValue)์—์„œ initialValue๋Š” ์ฒซ๋ฒˆ์งธ ๋ Œ๋”๋ง์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.

๊ทธ ํ›„์—๋Š”, props๋กœ ์ „๋‹ฌ๋œ intialValue ๊ฐ’์ด ๋ณ€ํ•˜๋”๋ผ๋„ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

props๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์žฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋‚˜์š”?

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ props๋กœ ์ „๋‹ฌํ•œ ๊ฒฝ์šฐ๋งŒ ์žฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚œ๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ ์ „๋‹ฌํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ Œ๋”๋ง์ด ๋‹ค์‹œ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.


ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. useEffect

useEffect ์‚ฌ์šฉํ•ด์„œ props๋กœ ์ „๋‹ฌ๋œ initialValue๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด setState๋กœ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.

export function SearchForm({ id, title, value, onChange }) {
  const [searchText, setSearchText] = useState(value);
  
  useEffect(() => {
    setSearchText(value);
  }, [value]);
}

 

2. ์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ props์™€ ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๋ฉด setState๋กœ ์ƒํƒœ๋ฅผ props์™€ ์ผ์น˜์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ props ๋ณ€ํ™”์— ๋”ฐ๋ผ ์ƒํƒœ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ์•ˆํ‹ฐํŒจํ„ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

export function SearchForm({ id, title, value, onChange }) {
  const [searchText, setSearchText] = useState(value);
  
  if (searchText !== value) {
    setSearchText(value);
  }
}

 

์›ํ•˜๋Š” ๋Œ€๋กœ props์™€ state ๊ฐ’์ด ์ผ์น˜๋˜๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ˜Ž

 

์ฐธ๊ณ 

https://stackoverflow.com/questions/58818727/react-usestate-not-setting-initial-value

 

React - useState not setting initial value

I'm refactoring to use Hooks and I've hit a very confusing wall I have a basic functional component like so: export const MakeComponent = props => { const { path, value, info, update } = pro...

stackoverflow.com

 

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ‘ฉโ€๐ŸŽค ํ”„๋ก ํŠธ์—”๋“œ > react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[React Router][Webpack] ์ค‘์ฒฉ ๋ผ์šฐํŒ… ์‚ฌ์šฉ ์‹œ 404 Not Found ์˜ค๋ฅ˜  (0) 2023.01.30
์ปดํฌ๋„ŒํŠธ ์ž˜ ๋งŒ๋“ค๊ธฐ: ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™”ํ•˜๊ธฐ  (0) 2023.01.11
[React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 2 - react, typescript, eslint, prettier  (0) 2022.12.29
[React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 1 - webpack, babel-loader  (0) 2022.12.29
    '๐Ÿ‘ฉ‍๐ŸŽค ํ”„๋ก ํŠธ์—”๋“œ/react' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [React Router][Webpack] ์ค‘์ฒฉ ๋ผ์šฐํŒ… ์‚ฌ์šฉ ์‹œ 404 Not Found ์˜ค๋ฅ˜
    • ์ปดํฌ๋„ŒํŠธ ์ž˜ ๋งŒ๋“ค๊ธฐ: ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™”ํ•˜๊ธฐ
    • [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 2 - react, typescript, eslint, prettier
    • [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 1 - webpack, babel-loader
    ๋‹ด๊ณฐ๋†
    ๋‹ด๊ณฐ๋†

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”