배열/객체/맵등을 이용하여 조건부로 렌더링이 가능합니다.
렌더링할 데이터를 배열/객체/맵등에 저장해 놓고 필요시 컬렉션별로 얻어오는 방법을 이용하여 값을 얻어오면 됩니다.
배열을 이용한 렌더링
|
// 객체를 이용한 조건부 렌더링
const obj = {
"guest" : <div>손님</div>,
"member" : <div>회원님</div>,
"admin" : <div>관리자님</div>,
};
const State = ({state})=> obj[state];
|
객체를 이용한 렌더링
|
// 배열을 이용한 조건부 렌더링
const array = [<div>손님</div>,<div>회원님</div>,<div>관리자님</div>]
const Level = ({level})=>array[level];
|
맵을 이용한 렌더링
|
// 맵을 이용한 조건부 렌더링
const areaMap =new Map([
[11,'서울특별시'],
[22,'부산광역시'],
[33,'대구광역시'],
[44,'인천광역시'],
[55,'광주광역시'],
[66,'대전광역시'],
[77,'울산광역시'],
[88,'세종특별자치시'],
]);
const Area = ({code})=><div>{areaMap.get(code)}</div>;
|
ConditionalRendering2.js 파일을 만듭니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
const ConditionalRendering2 = ()=>{
// 객체를 이용한 조건부 렌더링
const obj = {
"guest" : <div>손님</div>,
"member" : <div>회원님</div>,
"admin" : <div>관리자님</div>,
};
const State = ({state})=> obj[state];
// 배열을 이용한 조건부 렌더링
const array = [<div>손님</div>,<div>회원님</div>,<div>관리자님</div>]
const Level = ({level})=>array[level];
// 맵을 이용한 조건부 렌더링
const areaMap =new Map([
[11,'서울특별시'],
[22,'부산광역시'],
[33,'대구광역시'],
[44,'인천광역시'],
[55,'광주광역시'],
[66,'대전광역시'],
[77,'울산광역시'],
[88,'세종특별자치시'],
]);
const Area = ({code})=><div>{areaMap.get(code)}</div>;
const Greeting = ({isShow=false, username="한사람"})=>{
if(!isShow) return null; // 아무것도 그리지 않는다.
return <div>{username}님 반갑습니다.</div>
}
return(
<>
<State state='admin'/>
<State state='guest'/>
<State state='member'/>
<hr/>
<Level level={0}/>
<Level level={1}/>
<Level level={2}/>
<hr/>
<Area code={11}/>
<Area code={33}/>
<Area code={88}/>
<hr/>
<Greeting/>
<Greeting isShow={false} username="한사람"/>
<Greeting isShow={true} username="두사람"/>
<hr/>
</>
);
}
export default ConditionalRendering2;
|
cs |
App.js 파일을 만듭니다.
|
1
2
3
4
5
6
7
8
9
10
|
import ConditionalRendering2 from "./ConditionalRendering2";
const App = ()=>{
return (
<>
<ConditionalRendering2/>
</>
)
}
export default App;
|
cs |
index.js 파일을 만듭니다.
|
1
2
3
4
5
6
7
8
9
10
|
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.querySelector("#app"));
root.render(
<React.StrictMode>
<App/>
</React.StrictMode>
);
|
결과 화면입니다.

'Front End > React' 카테고리의 다른 글
| [React Exam 30] map() 사용 시 올바른 key 사용법 (0) | 2024.10.31 |
|---|---|
| [React Exam 29] map()을 이용한 반복 렌더링 (0) | 2024.10.31 |
| [React Exam 27] 조건부 렌더링 1 (0) | 2024.10.30 |
| [React Exam 26] <React.Fragment> vs <Fragment> vs <> (0) | 2024.10.30 |
| [React Exam 25] google font 사용하기 (1) | 2024.10.21 |