React Project๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด์ Reducer์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ฌ ๋ ์๊ฒจ๋ ์ค๋ฅ์ด๋ค.
Reducer store์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ฅผ useSelector๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ ธ์ค๊ธฐ๋ง ํ๋ฉด๋๋๊ฑด๋ฐ, ์ด์ ์๋ ์ ๋๋๋ฐ ๊ฐ์๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํด์ undefined ์ํฉ์ด ๋ฐ์ํ๋ค. ๊ทธ๋์ ์๊ธด ์ค๋ฅ์ด๋ค.
React ํ์ผ ์ผ๋ถ,
let scoreMention = "";
if(userInfo['scorelist'] == null){
return null
}else{
if(userLan === "kr"){
Object.keys(userInfo['scorelist']).map((c, idx) => {
if (scoreper >= parseInt(c)) {
return (scoreMention = userInfo['scorelist'][c]);
}
});
}else{
Object.keys(userInfo['scorelistEng']).map((c, idx) => {
if (scoreper >= parseInt(c)) {
return (scoreMention = userInfo['scorelistEng'][c]);
}
});
}
}
userInfo๋ถ๋ถ์ด useSelector๋ฅผ ์ฌ์ฉํด์ Reducer store์์ ๊ฐ์ ธ์ค๋ ๊ฐ์ด๋ค. ๊ทธ ๊ณณ์์ scorelist๋ฅผ ๊ฐ์ ธ์ค๋๊ฑด๋ฐ,
ํด์ฆ๋ฅผ ๋ค ํ๊ณ ๋๋ฉด ์ ๊ฐ๋ค์ด undefined๋ก ๋์ด์์, null ์ผ ๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๋ ํด์คฌ๋๋ ์ฌ์ ํ ๊ฐ์ ์ ๋์ด์ค์ง๋ง ์ค๋ฅ ํ์ด์ง๋ ๋ ์ด์ ๋จ์ง ์๋๋ค.
๊ฒฐ๋ก ,
Object.keys ์ด ๋ถ๋ถ์ด null๊ณผ undefined๋ฅผ ๋ฐ์๋ค์ด์ง ๋ชปํด์ ์๊ธฐ๋ ์ค๋ฅ์ด๋ค. ์์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
์ค๋ฅ ํ์ด์ง๋ ์ ์๊ธฐ์ง๋ง ์ฌ์ ํ ๊ฐ์ด ์ ๋์ด์จ๋ค. ๊ทธ๋์ store์ ์๋ ๋ฆฌ์คํธ๋ฅผ react๋ก ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ฌ๋๋ ๊ทธ ์ค๋ฅ๋ ํด๊ฒฐ~~
'๊ฐ๋ฐ > โ ์ค๋ฅ ๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NextJs] Project Clone ํ์ npm run build -> SWC Failed to Load (0) | 2022.06.02 |
---|---|
[Flutter] ์ TextFormField๊ฐ ์ ๋ํ๋ ๊น? (0) | 2022.05.18 |
[Flutter/Error] โBottom Overflow By XX.XX PIXELSโ? ํด๊ฒฐํ๊ธฐ (0) | 2022.04.17 |
React 17์์ React18 - ReactDOM.render์ createRoot (0) | 2022.04.07 |
[ReactNative] React-Native CLI ์ธ ๋ Expo-AppLoading install (0) | 2022.02.28 |