π React μ λ¬Έ 10 - μ‘°κ±΄λΆ λ λλ§
π React μ
λ¬Έ 10 - μ‘°κ±΄λΆ λ λλ§
π
γμνμ μ²μ λ§λ 리μ‘νΈγλ₯Ό μ½κ³ μ 리ν κΈμ λλ€.
μ‘°κ±΄λΆ λ λλ§μ΄λ?
- 쑰건μ λ°λΌ λ λλ§μ΄ λ¬λΌμ§λ κ±Έ μλ―Ένλ€.
- μ¬κΈ°μ 쑰건μ νλ‘κ·Έλλ° μΈμ΄μμ λ³΄ν΅ μΌμ»«λ 쑰건문μ μλ―Ένλ€.
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.



