์ด๋ค ์๋ฌ?
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๋ด๋ ค์ค props๋ฅผ ๋ฟ๋ ค์ฃผ๋ค๊ฐ input ๊ด๋ จ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Warning: A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component.
์์ธ ํ์
์์ ์ฝ์๋ค์ ๋ณด๋ ํ์ด์ง ์ง์
์์๋ ๊ด์ฐฎ์๋ฐ, ์๋ก๊ณ ์นจ ํ์ ๋ uid
๋ฅผ ๊ฐ์ ธ์ค๋ ์๊ฐ์ด ์์ด userData
๊ฐ ์ ๊น ๋น์ด๋ฒ๋ฆฌ๋ ์๊ฐ์ด ์กด์ฌํ๋ค. ์ด๋ ๋ฐ์ดํฐ๊ฐ์ด ์์ด์ undefined
๊ฐ ๋์ด๋ฒ๋ฆฌ๋ ๊ฒ์ด ์์ธ์ธ๋ฏ ํ๋ค!..
ํด๊ฒฐ
์ฌ๋ฌ ๊ธ๋ค์ ์ฐธ๊ณ ํด ๋ณด๋ input ํ๊ทธ์ value
๊ฐ undefined
์ผ ๊ฒฝ์ฐ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผ ํ๋ ๋ฏํ๋ค.
๊ทธ๋์ ๋ณดํต ์๋์ ๊ฐ์ด OR ์ฐ์ฐ์๋ก ๋น๊ฐ์ ์ฃผ๊ฑฐ๋...
value = {value || ''}
defaultValue
๋ฅผ ์ค์ ํด์ ํด๊ฒฐํ ์ ์๋ ๋ฏํ๋ค. ๋๋ค์๋ ์ด๋ ๊ฒ ํด๊ฒฐ๋๋ค.
ํ์ง๋ง? ๋๋ inputํ์
์ด text
๊ฐ ์๋๋ผ radio
์ธ ์ํฉ...
์๋๋ ๊ธฐ์กด์ ์ง ์ฝ๋. ์ผํญ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ true
์ธ ๊ฒฝ์ฐ์๋ง checked
๋ก ๋ฃ์ด์ฃผ๊ณ ์์๋ค.
{career.map((career) => (
<CareerRadioBox key={career.id}>
{isJunior ? (
<InfoRadioBoxInput
type="radio"
id={career.id}
name="isJunior"
checked
/>
) : (
<InfoRadioBoxInput type="radio" id={career.id} name="isJunior" />
)}
์์์ defaultValue
์ค์ ์ผ๋ก๋ ํด๊ฒฐ์ด ๋๋ค๋ ๊ธ์ ๋ณด์์ผ๋ ๋ญ๊ฐ ๋น์ทํ๊ฒ ํ ์ ์์ง ์์๊น ํ๋๋ฐ?
๊ตฌ๊ธ๋ง ํ๋ค๊ฐ ๊ฑฐ์ ๋์ผํ ์ด์๋ฅผ ์ฐพ์๋๋ค!.. ๋ฌด๋ ค ๋ฆฌ์กํธ ๋ ํฌ์งํ ๋ฆฌ์.. ์ด์๊ธ.. ๐
์๋ ๋ต๋ณ์ ์ฐธ๊ณ ํ์ฌ defaultChecked
๋ฅผ ๋ฃ์ผ๋ ํด๊ฒฐ์ด ๋์๋ค!
์์ ํ ์ฝ๋
{career.map((career) => (
<CareerRadioBox key={career.id}>
{isJunior ? (
<InfoRadioBoxInput
type="radio"
id={career.id}
name="isJunior"
defaultValue={career.value}
defaultChecked
/>
) : (
<InfoRadioBoxInput
type="radio"
id={career.id}
defaultValue={career.value}
name="isJunior"
/>
)}
ํด๊ฒฐ ์๋ฃ!
์๋ก๊ณ ์นจ ์ ์ด๋ฏธ์ง ๋ฐ์์ค๋ ๊ฒ ์กฐ๊ธ ๋๋ฆฐ๋ฐ ์ด๊ฑด ์๋ฌ๋์ ๋ณ๊ฐ๋ ์ถํ ํด๊ฒฐํด ๋ด์ผ์ง ๐
Comment