๐ React ์ ๋ฌธ โ ฉ - ์กฐ๊ฑด๋ถ ๋ ๋๋ง
๐ React ์
๋ฌธ โ
ฉ - ์กฐ๊ฑด๋ถ ๋ ๋๋ง
๐
ใ์ํ์ ์ฒ์ ๋ง๋ ๋ฆฌ์กํธใ
๋ฅผ ์ฝ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค.
์กฐ๊ฑด๋ถ ๋ ๋๋ง์ด๋?
- ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ ๋๋ง์ด ๋ฌ๋ผ์ง๋ ๊ฑธ ์๋ฏธํ๋ค.
- ์ฌ๊ธฐ์ ์กฐ๊ฑด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ณดํต ์ผ์ปซ๋ ์กฐ๊ฑด๋ฌธ์ ์๋ฏธํ๋ค.
Inline
์กฐ๊ฑด์ด๋?
์กฐ๊ฑด๋ฌธ์ ์ฝ๋ ์์ ์ง์ด๋ฃ๋ ๊ฒ์ ์๋ฏธํ๋ค.
โ
Inline-if
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Mailbox(props) {
const unreadMessages = props.unreadMessages;
return (
<div>
<h1>์๋
ํ์ธ์!</h1>
{unreadMessages.length > 0 &&
<h2>
ํ์ฌ {unreadMessages.length}๊ฐ์ ์ฝ์ง ์์ ๋ฉ์ธ์ง๊ฐ ์์ต๋๋ค.
</h2>
}
</div>
);
}
if
๋ฌธ์ ์ฝ๋์ ์ง์ ๋ฃ์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ค์ ๋ก๋if
์กฐ๊ฑด๋ฌธ์ด ์๋&&
๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.Java
๋ ๋์ผํ๊ฒ ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด๋ฌธ์ดtrue
๋ฉด ๋ ๋ฒ์งธ ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ฌํ๊ณ ,false
๋ผ๋ฉด ๊ฒ์ฌํ์ง ์๋๋ค.- ์ด๋ฅผ ๋จ์ถ ํ๊ฐ๋ผ๊ณ ํ๋ค.ย
โ
Inline-if-else
1
2
3
4
5
6
7
function UserStatus(props) {
return (
<div>
์ด ์ฌ์ฉ์๋ ํ์ฌ <b>{props.isLoggedIn ? '๋ก๊ทธ์ธ' : '๋ก๊ทธ์ธํ์ง ์์'}</b> ์ํ์
๋๋ค.
</div>
);
}
Component
๋ ๋๋ง ๋ง๊ธฐ
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
// WarningBanner.jsx
function WarningBanner(props) {
if (!props.warning) {
return null;
}
return (
<div>๊ฒฝ๊ณ !</div>
);
}
// MainPage.jsx
function MainPage(props) {
const [showWarning, setShowWarning] = useState(false);
const handleToggleClick = () => {
setShowWarning(prevShowWarning => !prevShowWarning);
}
return (
<div>
<WarningBanner warning={showWarning}/>
<button onClick={handleToggleClick}>
{showWarning ? '๊ฐ์ถ๊ธฐ' : '๋ณด์ด๊ธฐ'}
</button>
</div>
);
}
MainPage.jsx
์์WarningBanner.jsx
๋ฅผComponent
๋ก ํธ์ถํ๋๋ฐ,warning
ํ๋ผ๋ฏธํฐ๋ฅผ ํจ๊ป ์ ๋ฌํ๋ค.false
๋ฅผwarning
ํ๋ผ๋ฏธํฐ์ ๋ด์ ์ ๋ฌํ๋ฉดComponent
๋null
์ ๋ฐํํ๋ฏ๋ก ๋ ๋๋ง์ ํ์ง ์๋๋ค.- ์ฐธ๊ณ ๋ก
Class Component
์render()
ํจ์์์null
์ ๋ฐํํ๋ ๊ฒ์Component
์๋ช ์ฃผ๊ธฐ ํจ์์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์componentDidUpdate()
ํจ์๋ ์ฌ์ ํ ํธ์ถ๋๋ค.
์ค์ต
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
56
57
58
59
60
61
62
return (
<Box sx=>
<Typography variant="h6" sx=>์ํฌ์คํ์ด์ค</Typography>
<Divider sx= />
{isCreating || isEditing ? (
<CreateWorkspace
onCancel={handleCancel}
onWorkspaceCreated={handleWorkspaceCreated}
onWorkspaceUpdated={handleWorkspaceUpdated}
workspace={selectedWorkspace}
isEditing={isEditing}
/>
) : (
<>
{isAdding ? (
<ManageJoin
onCancel={handleCancelAdd}
workspace={selectedWorkspace.id}
/>
) : (
<>
<ReadWorkspace
workspaceList={workspaceList}
onCreateWorkspace={handleCreateWorkspace}
onEditWorkspace={handleEditWorkspace}
onAddMember={handleAddMember}
handleDeleteButtonClick={handleDeleteButtonClick}
workspace={selectedWorkspace}
setWorkspace={setSelectedWorkspace}
memberList={memberList}
page={page}
/>
{workspaceList.length > 0 && (
<>
<Card variant="outlined" sx=>
<Typography variant="body2">
<Chip label="์ค๋ช
" color="primary" variant="outlined" />
{' '}{selectedWorkspace?.description}
</Typography>
</Card>
<ConfirmDialog
open={isDialogOpen}
onConfirm={handleWorkspaceDeleted}
onClose={handleCancelDelete}
title={'์ํฌ์คํ์ด์ค ์ญ์ '}
content={'ํด๋น ์ํฌ์คํ์ด์ค๋ฅผ ์ ๋ง ์ญ์ ํ์๊ฒ ์ต๋๊น?\n์ญ์ ๋ ์ํฌ์คํ์ด์ค๋ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.'}
/>
<MemberTable
memberList={memberList}
page={page}
workspace={selectedWorkspace}
onPageChange={handlePageChange}
onChange={readMemberListInWorkspace}
/>
</>
)}
</>
)}
</>
)}
</Box>
);
- ์ฑ
์์ ์ ๊ณตํ๋ ์ค์ต ์ฝ๋๊ฐ ์๋ ํ ์ด ํ๋ก์ ํธ
v1.0.0
์ฝ๋์ด๋ค. - ๋ง์ฝ
isCreating == true || isEditing == true
๋ฉด ์ํฌ์คํ์ด์ค ๋ฑ๋ก ๋ฐ ์์ ํ๋ฉด์ ๋ ๋๋ง ํ๋ค. - ์์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๊ณ
isAdding == true
๋ฉด ๋ฉค๋ฒ ์ถ๊ฐ ํ๋ฉด์ ๋ ๋๋ง ํ๋ค. - ๋ ์กฐ๊ฑด ๋ชจ๋ ํด๋นํ์ง ์๋๋ค๋ฉด ์ํฌ์คํ์ด์ค ๋ฉ์ธ ํ๋ฉด์ ๋ ๋๋ง ํ๋ค.
โ ์ํฌ์คํ์ด์ค ๋ฉ์ธ ํ๋ฉด
โ ์ํฌ์คํ์ด์ค ๋ฑ๋ก ๋ฐ ์์ ํ๋ฉด
โ ๋ฉค๋ฒ ์ถ๊ฐ ํ๋ฉด
ํ๊ณ
- ์ด๋ฒ ์ค์ต์ ์ฑ
์์ ์ ๊ณตํ ์ค์ต ๋ด์ฉ์ด ์๋ ํ์์ ํ ์ด ํ๋ก์ ํธ
v1.0.0
ํ๋ก ํธ์๋ ์ฝ๋์ธ๋ฐ,Component
๋ถ๋ฆฌ๊ฐ ์ ๋๋ก ์ ๋์ด ๊ต์ฅํ ๋ณต์กํ ๊ตฌ์กฐ๊ฐ ๋์๋ค. - ํด๋น ๋ฒ์ ์ ํ๋ก์ ํธ ์์ฒด๋ฅผ ์ด๊ธฐํ ํ ์์ ์ธ๋ฐ, ๋ค์์๋ ์กฐ๊ธ ๋ ์ ๊ฒฝ ์จ์ ์์ฑํด๋ด์ผ๊ฒ ๋ค.
This post is licensed under CC BY 4.0 by the author.