๋ฌธ์ ์ํฉ
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