π 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.