๋ชฉ์ฐจ
์ด์ ๊ธ โผ
0. 2023.05.05 - [๐ | WEB DEV/React] - [React] 0. React๋ฅผ ์ฌ์ฉํ๋ ์ด์ & ์ด๊ธฐ ์ธํ
1. 2023.05.07 - [๐ | WEB DEV/React] - [React] 1. JSX
2. 2023.05.26 - [๐ | WEB DEV/React] - [React] 2. state (๋ณ์, array, object)
2-1. 2023.05.27 - [๐ | WEB DEV/React] - [React] 2-1. array state ์ ๋ ฌํ๊ธฐ ( .sort()ํ์ฉ)
3. 2023.05.28 - [๐ | WEB DEV/React] - [React] 3. ์ปดํฌ๋ํธ (Component)
4. 2023.05.28 - [๐ | WEB DEV/React] - [React] 4. ๋์ ์ธ UI ์ ์ํ๊ธฐ
5. 2023.05.28 - [๐ | WEB DEV/React] - [React] 5. ๋ฐ๋ณต๋๋ ๋ถ๋ถ ์ถ์ฝํ๊ธฐ (map)
6. 2023.05.29 - [๐ | WEB DEV/React] - [React] 6. props
8. 2023.07.06 - [๐ | WEB DEV/React] - [React] 8. ๋ค๋ฅธ ํ์ผ์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
11. 2023.10.03 - [๐ | WEB DEV/React] - [React] 11. ๋ผ์ฐํ -3 ์์ฐํ ๋ผ์ฐํ
13. 2024.01.02 - [๐ | WEB DEV/React] - [React] 13. ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ Lifecycle์ useEffect
React์์ ๋ฉ๋ด ํญ์ ์ ์ํด๋ณด์!
1. ๋์ ์ธ UI ์ ์์ ์ํ 3step
๋์ ์ธ UI๋ฅผ ์ ์ ๊ณผ์ ์ ์์ฝํ๋ฉด 3๋จ๊ณ๋ก ๋๋ ๋ณผ ์ ์๋ค.
[์ ์ 3step]
1) Html, css๋ก UI ์ ์
2) UI์ ํ ์ํ๋ฅผ ๋ด์ state ์์ฑ
3) state ๋ณํ์ ๋ฐ๋ฅธ UI ๋ณ๊ฒฝ
์๋์ ์์๋ฅผ ์ดํด๋ณด์.
๋ฉ๋ด ๋ฒํผ์ด ์๊ณ , ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋์ ๋ด์ฉ์ด ๋ณ๊ฒฝ๋๋ค.
2. ์ ์ ๋ฐฉ๋ฒ
1) html, css๋ก UI ์ ์
๊ฐ๊ฐ ๋จ์ผ ํ์ผ๋ก ์ ์ํด์ importํ์๋ค.
2) state ์์ฑ
// ํด๋ฆญํ ํญ ์ธ๋ฑ์ค
const [tabIdx, setTabIdx] = useState(0)
// ํด๋ฆญ ์ด๋ฒคํธ ํจ์
const tabClick = (idx)=>{
if(tabIdx !== idx){
tabBtnRef.current[tabIdx].classList.remove("selected");
tabBtnRef.current[idx].classList += " selected";
setTabIdx(idx);
}
}
3) state ๋ณํ์ ๋ฐ๋ฅธ UI ๋ณ๊ฒฝ
์ปดํฌ๋ํธ๋ฅผ ์์ฑํ์ฌ ์๋์ ๊ฐ์ด ์์น์ํจ๋ค.
RenderTab์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ํ์๊ณ
idx๋ผ๋ props์ ์์์ ์ ์ํ tabIdx state๋ฅผ ์ ๋ฌํด์ค๋ค.
function App(){
...
return(
...
{
<RenderTab idx={tabIdx} />
}
)
}
- ์ ์ด๋ฌธ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ
const RenderTab = (props)=>{
switch (props.idx) {
case 0:
return <Tab1/>;
break;
case 1:
return(<Tab2/>)
break;
case 2:
return(<Tab3/>)
break;
default:
return(<Tab1/>)
break;
}
}
- if ๋ฌธ ์์ด ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
if๋ฌธ ์์ด ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ๊ณ ์ถ์ ๊ฒฝ์ฐ
์๋์ฒ๋ผ ์ซ์์ธ props์ Array ์๋ฃํ์ ํ์ฉํ๋ฉด ๋๋ค.
function RenderTab(props){
return [ <Tab1/>, <Tab2/>, <Tab3/> ][props.idx]
}
- props.~~ ์์ด ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ๋ ๋ฐฉ๋ฒ
props.~~ ๋ฅผ ๋์ฑ ํจ์ถํ๊ธฐ์ํด์๋
์๋์ฒ๋ผ {props๋ช }์ ์ด์ฉํ๋ฉด ๋๋ค.
function RenderTab({idx}){
return [ <Tab1/>, <Tab2/>, <Tab3/> ][idx]
}
๋๊ธ