Skip to content
This repository was archived by the owner on Apr 13, 2020. It is now read-only.

Commit 5fb894b

Browse files
authored
01-06 update of introduction-to-jsx (#44) @jinto
1 parent ace9869 commit 5fb894b

File tree

1 file changed

+42
-22
lines changed

1 file changed

+42
-22
lines changed

โ€Žmanuscript/chapter1.md

+42-22
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ npm install -g <ํŒจํ‚ค์ง€ ์ด๋ฆ„>
6868
npm install react
6969
~~~~~~~~
7070

71+
ํŒจํ‚ค์ง€๋Š” ์ƒ์„ฑ๋œ *node_modules/* ํด๋”์— ์ €์žฅ๋˜๊ณ  ์˜์กด์„ฑ ํŒŒ์ผ์ธ *package.json*์— ํŒจํ‚ค์ง€ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.
72+
7173
*package.json* ํŒŒ์ผ์ด ์žˆ์–ด์•ผ๋งŒ `npm` ๋ช…๋ น์–ด๋กœ *node_modules/* ํด๋”๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ์ƒˆ ์ง€์—ญ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
7274

7375
{title="Command Line",lang="text"}
@@ -104,7 +106,6 @@ npm install --save-dev <package>
104106

105107
## 1.4 ๋ฆฌ์•กํŠธ ์„ค์น˜
106108

107-
108109
### 1.4.1 CDN
109110
๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ๋กœ CDN([Content Delivery Network: ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ](https://en.wikipedia.org/wiki/Content_delivery_network)์˜ ์•ฝ์ž)์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. CDN์ด ๋ฌด์—‡์ธ์ง€๋Š” ์ง€๊ธˆ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ์ฑ…์—์„œ CDN์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์งง๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์ •๋„๋Š” ๊ดœ์ฐฎ๊ฒ ์ง€์š”. ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ๊ณ ๊ฐ์—๊ฒŒ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด CDN์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํŒŒ์ผ์ค‘์—๋Š” ๋ฆฌ์•กํŠธ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ์šฉ์œผ๋กœ ํฌ์žฅ๋œ ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” *react.js*๋ผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
110111

@@ -238,7 +239,7 @@ npm run build
238239

239240
## 1.6 JSX ๊ธฐ์ดˆ
240241

241-
๋ฆฌ์•กํŠธ JSX ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. *create-react-app*๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘ ํ•˜๋ฉด ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. *src/App.js* ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ด์–ด ๋‚ด์šฉ์„ ์ฝ์–ด๋ด…์‹œ๋‹ค.
242+
๋ฆฌ์•กํŠธ์˜ JSX ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. *create-react-app*์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ผˆ๋Œ€๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ๋“ค์ด ๊ธฐ๋ณธ์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” *src/App.js* ํŒŒ์ผ ๋งŒ์„ ์ˆ˜์ •ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
242243

243244
{title="src/App.js",lang=javascript}
244245
~~~~~~~~
@@ -252,11 +253,18 @@ class App extends Component {
252253
<div className="App">
253254
<header className="App-header">
254255
<img src={logo} className="App-logo" alt="logo" />
255-
<h1 className="App-title">Welcome to React</h1>
256+
<p>
257+
Edit <code>src/App.js</code> and save to reload.
258+
</p>
259+
<a
260+
className="App-link"
261+
href="https://reactjs.org"
262+
target="_blank"
263+
rel="noopener noreferrer"
264+
>
265+
Learn React
266+
</a>
256267
</header>
257-
<p className="App-intro">
258-
To get started, edit <code>src/App.js</code> and save to reload.
259-
</p>
260268
</div>
261269
);
262270
}
@@ -265,17 +273,27 @@ class App extends Component {
265273
export default App;
266274
~~~~~~~~
267275

268-
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6 ๊ธฐ๋Šฅ์ธ `import`๊ณผ `export`, ํด๋ž˜์Šค(class) ๋ฌธ๋ฒ•์„ ๋ฒŒ์จ๋ถ€ํ„ฐ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ์กฐ๊ธ‰ํ•ดํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์›Œ๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
276+
`import`๊ณผ `export` ํ˜น์€ ํด๋ž˜์Šค(class) ๋ฌธ๋ฒ•์„ ๋ชจ๋ฅธ๋‹ค๊ณ  ๊ฑฑ์ •ํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ES6์˜ ๊ธฐ๋Šฅ์ธ๋ฐ ์ž ์‹œํ›„์— ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
277+
278+
`App.js` ํŒŒ์ผ์—๋Š” App์ด๋ผ๋Š” ์ด๋ฆ„์˜ **๋ฆฌ์•กํŠธ ES6 ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ(React ES6 Class Component)**๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‚˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”์†Œ๋กœ์จ ์–ด๋””์„œ๋“  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ๋‹ค๋ฅธ ๋ง๋กœ๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šคํ™” ๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.
269279

270-
`App.js` ํŒŒ์ผ์— **๋ฆฌ์•กํŠธ ES6 ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ(React ES6 Class Component)** ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ ์–ธํ–ˆ์Šต๋‹ˆ๋‹ค.
280+
{title="Code Playground",lang="javascript"}
281+
~~~~~~~~
282+
// ์ปดํฌ๋„ŒํŠธ ์„ ์–ธ
283+
class App extends Component {
284+
...
285+
}
271286
272-
๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๋Š”, HTML ์—˜๋ ˆ๋จผํŠธ(element)์™€ ๊ฐ™์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์–ด๋Š ๊ณณ์ด๋“ ์ง€ ์žฌ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.
287+
// ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ (ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šคํ™”๋ผ๊ณ ๋„ ํ•œ๋‹ค.)
288+
// ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
289+
<App />
290+
~~~~~~~~
273291

274-
`render()` ๋ฉ”์„œ๋“œ์—์„œ **์—˜๋ ˆ๋จผํŠธ(element)** ๊ฐ€ ๋ฐ˜ํ™˜(return)๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์—˜๋ ˆ๋จผํŠธ๊ฐ€ ๋ชจ์—ฌ ์ปดํฌ๋„ŒํŠธ ์ „์ฒด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ(component), ์ธ์Šคํ„ด์Šค(instance), ์—˜๋ ˆ๋จผํŠธ(element) ๊ฐ„์˜ ์šฉ์–ด์™€ ๊ฐ ์“ฐ์ž„์˜ ์ฐจ์ด๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
292+
`render()` ๋ฉ”์„œ๋“œ๋Š” **์—˜๋ ˆ๋จผํŠธ(element)**๋ฅผ ๋Œ๋ ค์ค๋‹ˆ๋‹ค. ์•ž์„œ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ ์ปดํฌ๋„ŒํŠธ๋Š” ์—ฌ๋Ÿฌ ์—˜๋ ˆ๋จผํŠธ๊ฐ€ ๋ชจ์—ฌ์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปดํฌ๋„ŒํŠธ(component), ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šค(instance), ์—˜๋ ˆ๋จผํŠธ(element) ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
275293

276-
์ด์ œ `App` ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šคํ™” ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ Œ๋”๋ง ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. App ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์„ ์–ธ๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์— ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. JSX๋ฌธ๋ฒ•์ธ `<App/>`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋Š ์ปดํฌ๋„ŒํŠธ์—์„œ๋‚˜ ์ธ์Šคํ„ด์Šค ํ™”ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
294+
`App` ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ ์ธ์Šคํ„ด์Šคํ™” ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ Œ๋”๋ง ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. App ์ปดํฌ๋„ŒํŠธ๋Š” ์„ ์–ธ์ผ ๋ฟ์ด๊ณ , ์‚ฌ์šฉ๋œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. JSX ๋ฌธ๋ฒ•์œผ๋กœ `<App/>`๋ผ๊ณ  ์ ์œผ๋ฉด ์ธ์Šคํ„ด์Šคํ™” ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž ์‹œํ›„์— ์‚ฌ์šฉํ•˜๋Š” ์žฅ๋ฉด์„ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
277295

278-
`render()` ๋ธ”๋ก ์•ˆ ๋‚ด์šฉ์€ HTML๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ, JSX ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฒฐํ•ฉํ•ด JSX ๋ฌธ๋ฒ•์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋”ฐ๋กœ ์‚ฌ์šฉํ•ด ๊ฐœ๋ฐœํ•ด์™”๋‹ค๋ฉด ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์ด ๊ฝค ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋จผ์ € JSX์—์„œ ๊ธฐ๋ณธ์ ์ธ HTML ์—˜๋ ˆ๋จผํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € `App` ์ปดํฌ๋„ŒํŠธ์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
296+
`render()` ๋ธ”๋ก ์•ˆ ๋‚ด์šฉ์€ HTML๊ณผ ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ, JSX ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. JSX ๋ฌธ๋ฒ•์€ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„ž์–ด ์“ธ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ๋ฌธ๋ฒ•์ด์ง€๋งŒ, ์ง€๊ธˆ๊นŒ์ง€ HTML๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์‚ฌ์šฉํ•ด์™”๋‹ค๋ฉด ๊ฝค ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋จผ์ € JSX์—์„œ ๊ธฐ๋ณธ์ ์ธ HTML ์—˜๋ ˆ๋จผํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. `App.js`์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ง€์šฐ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”๋ด…์‹œ๋‹ค.
279297

280298
{title="src/App.js",lang=javascript}
281299
~~~~~~~~
@@ -286,7 +304,7 @@ class App extends Component {
286304
render() {
287305
return (
288306
<div className="App">
289-
<h2>๋ฆฌ์•กํŠธ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค</h2>
307+
<h2>๋ฆฌ์•กํŠธ ๋„์›€๋‹ซ๊ธฐ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค</h2>
290308
</div>
291309
);
292310
}
@@ -295,7 +313,7 @@ class App extends Component {
295313
export default App;
296314
~~~~~~~~
297315

298-
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—†์ด `render()` ๋ฉ”์„œ๋“œ๋กœ HTML๋ฅผ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด "๋ฆฌ์•กํŠธ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"๋ผ๋Š” ๊ฐ’์„ ์ฃผ๊ณ , ์ด ๋ณ€์ˆ˜๋ฅผ JSX ๋ฌธ๋ฒ•์ธ ์ค‘๊ด„ํ˜ธ(`{}`) ์•ˆ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
316+
์ด ์ฝ”๋“œ์˜ `render()` ๋ฉ”์„œ๋“œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์—†๋Š” HTML๋งŒ์„ ๋ฐ˜ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด "๋ฆฌ์•กํŠธ ๋„์›€๋‹ซ๊ธฐ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค"๋ผ๋Š” ๊ฐ’์„ ์ฃผ๊ณ , ์ด ๋ณ€์ˆ˜๋ฅผ JSX ๋ฌธ๋ฒ•์ธ ์ค‘๊ด„ํ˜ธ(`{}`) ์•ˆ์— ๋„ฃ์–ด๋ด…์‹œ๋‹ค.
299317

300318
{title="src/App.js",lang=javascript}
301319
~~~~~~~~
@@ -305,7 +323,7 @@ import './App.css';
305323
class App extends Component {
306324
render() {
307325
# leanpub-start-insert
308-
var helloWorld = '๋ฆฌ์•กํŠธ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค';
326+
var helloWorld = '๋ฆฌ์•กํŠธ ๋„์›€๋‹ซ๊ธฐ์— ์˜ค์‹  ์—ฌ๋Ÿฌ๋ถ„์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค';
309327
# leanpub-end-insert
310328
return (
311329
<div className="App">
@@ -320,20 +338,21 @@ class App extends Component {
320338
export default App;
321339
~~~~~~~~
322340

323-
๋‹ค์‹œ `npm start` ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
341+
๋‹ค์‹œ `npm start` ๋ช…๋ น์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ด์„œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
324342

325-
์•„๋งˆ `className`๊ฐ€ ์†์„ฑ(attribute) ์ž„์„ ๋ˆˆ์น˜์ฑ˜์„ ๊ฒ๋‹ˆ๋‹ค. JSX์˜ `className`์€ HTML ํ‘œ์ค€ `class`๋กœ๋ถ€ํ„ฐ ๊ธฐ์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ ์ธ ์ด์œ ๋กœ JSX๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‚ด๋ถ€ HTML ์†์„ฑ์„ ๋ฐ”๊ฟ”์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ ์ค‘ ['์ง€์›ํ•˜๋Š” HTML ์†์„ฑ'](https://reactjs.org/docs/dom-elements.html) ์žฅ์—์„œ ํ™•์ธํ•˜๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. HTML ์†์„ฑ์€ ์นด๋ฉœ ์ผ€์ด์Šค(camelCase) ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ JSX ์†์„ฑ์„ ์ข€ ๋” ๋‹ค๋ค„๋ณผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
343+
์•„๋งˆ `className` ์†์„ฑ(attribute)์ด ๋ˆˆ์— ๋Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. `className`์€ ํ‘œ์ค€ HTML์˜ `class`๋กœ๋ถ€ํ„ฐ ์™”์Šต๋‹ˆ๋‹ค. JSX๋Š” ๋ช‡ ๊ฐ€์ง€ HTML ๋‚ด๋ถ€ ์†์„ฑ์„ ๋ฐ”๊ฟ”์•ผ ํ–ˆ๋Š”๋ฐ, [๋ฆฌ์•กํŠธ์˜ HTML ์†์„ฑ ์ง€์›](https://reactjs.org/docs/dom-elements.html#all-supported-html-attributes)์— ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋€ ์ด๋ฆ„๋“ค์€ ๋ชจ๋‘ ์นด๋ฉœ ์ผ€์ด์Šค(camelCase) ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ JSX ์†์„ฑ ๋ช‡๊ฐœ๋ฅผ ๋” ๋งŒ๋‚˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
326344

327345
### ์‹ค์Šตํ•˜๊ธฐ
328346

347+
* [์ง€๋‚œ ์„น์…˜์˜ ์ฝ”๋“œ](http://bit.ly/2H8H14h)๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
348+
* [์ด๋ฒˆ ์„น์…˜์—์„œ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ](http://bit.ly/2H9KwHA)๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
349+
329350
* JSX ์•ˆ์— ์ƒˆ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๋ Œ๋”๋ง ํ•ฉ๋‹ˆ๋‹ค.
330351
* `user` ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  JSX ๋ฌธ๋ฒ•์œผ๋กœ `firstname`๊ณผ `lastname`์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
331-
* `render()`๋ฉ”์„œ๋“œ ์•ˆ์— `user` ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
352+
* `render()`๋ฉ”์„œ๋“œ ์•ˆ์—์„œ `user` ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
332353

333-
### ์ฝ์–ด๋ณด๊ธฐ
334-
335-
* [[๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ] JSX](https://reactjs.org/docs/introducing-jsx.html)
336-
* [[๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ] ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ, ์—˜๋ ˆ๋จผํŠธ, ์ธ์Šคํ„ด์Šค](https://reactjs.org/blog/2015/12/18/react-components-elements-and-instances.html)
354+
* [[๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ] JSX](https://reactjs.org/docs/introducing-jsx.html)๋ฅผ ์ฝ์–ด๋ด…๋‹ˆ๋‹ค.
355+
* [[๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ] ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ, ์—˜๋ ˆ๋จผํŠธ, ์ธ์Šคํ„ด์Šค](https://reactjs.org/blog/2015/12/18/react-components-elements-and-instances.html)๋ฅผ ์ฝ์–ด๋ด…๋‹ˆ๋‹ค.
337356

338357
## 1.7 ES6 const ยท let
339358

@@ -401,6 +420,7 @@ export default App;
401420
* [[MDN] ES6 let](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let)
402421

403422
### ์ฐพ์•„๋ณด๊ธฐ
423+
404424
* ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ด…์‹œ๋‹ค.
405425
* ๋ณดํŽธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งํ•˜๋Š” ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.
406426
* ๋ฆฌ์•กํŠธ์™€ ๊ทธ ์ƒํƒœ๊ณ„์—์„œ ๋ถˆ๋ณ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

0 commit comments

Comments
ย (0)