@@ -4,16 +4,16 @@ title: 在 JSX 中使用 JavaScript 的語法
4
4
5
5
<Intro >
6
6
7
- JSX 允許你在 JavaScript 文件中編寫類似 HTML 標籤的代碼 ,使渲染邏輯和內容保持在同樣的地方。有時你會想在標籤中添加一些 JavaScript 邏輯或引用一個動態屬性。在這種情況下,你可以在 JSX 中使用花括號來編寫 JavaScript。
7
+ JSX 讓你在 JavaScript 文件中撰寫類似 HTML 標籤的程式碼 ,使渲染邏輯和內容保持在同樣的地方。有時你會想在標籤中新增一些 JavaScript 邏輯或引用一個動態屬性。在這種情況下,你可以在 JSX 中使用大括號來撰寫 JavaScript。
8
8
9
9
</Intro >
10
10
11
11
<YouWillLearn >
12
12
13
13
* 如何使用引號傳遞 string
14
- * 如何使用花括號在 JSX 中引用 JavaScript 變量
15
- * 如何使用花括號在 JSX 中調用 JavaScript 函數
16
- * 如何使用花括號在 JSX 中使用 JavaScript 對象
14
+ * 如何使用大括號在 JSX 中引用 JavaScript 變數
15
+ * 如何使用大括號在 JSX 中呼叫 JavaScript 函式
16
+ * 如何使用大括號在 JSX 中使用 JavaScript object
17
17
18
18
</YouWillLearn >
19
19
@@ -41,7 +41,7 @@ export default function Avatar() {
41
41
42
42
</Sandpack >
43
43
44
- 在這裡, ` "https://i.imgur.com/7vQD0fPs.jpg" ` 和 ` "Gregorio Y. Zara" ` 被作為 strings 轉遞。
44
+ 在這裡, ` "https://i.imgur.com/7vQD0fPs.jpg" ` 和 ` "Gregorio Y. Zara" ` 被作為 string 轉遞。
45
45
46
46
但是如果你想動態地指定 ` src ` 或 ` alt ` 文本呢?** 你可以替換` " ` 和` " ` 為` { ` 和` } ` ,以使用 JavaScript 中的值,**
47
47
@@ -67,9 +67,9 @@ export default function Avatar() {
67
67
68
68
</Sandpack >
69
69
70
- 注意 ` className="avatar" ` 和 ` src={avatar} ` 之間的區別,前者指定了一個 ` "avatar" ` 的CSS類名,使圖片變成圓形,而後者讀取了 JavaScript 變量 ` avatar ` 的值。這是因為花括號可以讓你在標籤中使用 JavaScript!
70
+ 注意 ` className="avatar" ` 和 ` src={avatar} ` 之間的區別,前者指定了一個 ` "avatar" ` 的CSS類名,使圖片變成圓形,而後者讀取了 JavaScript 變量 ` avatar ` 的值。這是因為大括號可以讓你在標籤中使用 JavaScript!
71
71
72
- ## 使用花括號 : 進入 JavaScript 世界的窗口 {/* using-curly-braces-a-window-into-the-javascript-world* /}
72
+ ## 使用大括號 : 進入 JavaScript 世界的窗口 {/* using-curly-braces-a-window-into-the-javascript-world* /}
73
73
74
74
JSX 是編寫 JavaScript 的一種特殊方式。這意味著可以在它裡面透過大括號 ` { } ` 使用 JavaScript 。下面的例子首先聲明了一位科學家的名字 ` name ` ,然後用大括號將其嵌入 ` <h1> ` 內:
75
75
@@ -88,7 +88,7 @@ export default function TodoList() {
88
88
89
89
試著把 `name` 的值從 `Gregorio Y. Zara` 改為 `Hedy Lamarr`。看到待辦事項列表的標題如何變化了嗎?
90
90
91
- 任何的 JavaScript 表達式都可以在花括號之間使用 ,包括像 `formatDate()` 這樣的函數調用 :
91
+ 任何的 JavaScript 表達式都可以在大括號之間使用 ,包括像 `formatDate()` 這樣的函式呼叫 :
92
92
93
93
<Sandpack>
94
94
@@ -111,18 +111,18 @@ export default function TodoList() {
111
111
112
112
</Sandpack>
113
113
114
- ### 哪裡使用花括號 {/*where-to-use-curly-braces*/}
114
+ ### 哪裡使用大括號 {/*where-to-use-curly-braces*/}
115
115
116
- 你只能在 JSX 中以兩種方式使用花括號 。
116
+ 你只能在 JSX 中以兩種方式使用大括號 。
117
117
118
118
1. **作為文本** 直接在JSX標籤內使用。 `<h1>{name}' s To Do List< / h1> ` 可以使用,但 ` < {tag}> Gregorio Y . Zara ' s To Do List</{tag}>` 就不行。
119
119
2. **作為 attributes** 緊隨 `=` 符號之後:`src={avatar}` 將讀取 `avatar` 變量,但 `src="{avatar}"` 將傳遞 string `"{avatar}"`。
120
120
121
- ## 使用 "雙花括號 ":JSX 中的 CSS 和其他對象 {/*using-double-curlies-css-and-other-objects-in-jsx*/}
121
+ ## 使用 "雙大括號 ":JSX 中的 CSS 和其他 object {/*using-double-curlies-css-and-other-objects-in-jsx*/}
122
122
123
- 除了 strings、numbers 和其他 JavaScript 表達式外,你甚至可以在 JSX 中傳遞對象。對像也用花括號表示 ,如 `{ name: "Hedy Lamarr", inventions: 5 }` 。因此,要在JSX中傳遞一個 JS 對象,你必須用另一對花括號包裹該對象 :`person={{ name: "Hedy Lamarr", inventions: 5 }}`。
123
+ 除了 strings、numbers 和其他 JavaScript 表達式外,你甚至可以在 JSX 中傳遞 object。對像也用大括號表示 ,如 `{ name: "Hedy Lamarr", inventions: 5 }` 。因此,要在JSX中傳遞一個 JS object,你必須用另一對大括號包裹該 object :`person={{ name: "Hedy Lamarr", inventions: 5 }}`。
124
124
125
- 你可能會在 JSX 中看到這種內聯 CSS 樣式。 React 並不要求你使用內聯樣式(CSS類在大多數情況下效果很好)。但是當你需要一個內聯樣式時,你要向 `style` attribute 傳遞一個對象 :
125
+ 你可能會在 JSX 中看到這種內聯 CSS 樣式。 React 並不要求你使用內聯樣式(CSS類在大多數情況下效果很好)。但是當你需要一個內聯樣式時,你要向 `style` attribute 傳遞一個 object :
126
126
127
127
<Sandpack>
128
128
@@ -150,7 +150,7 @@ ul { padding: 20px 20px 20px 40px; margin: 0; }
150
150
151
151
嘗試改變 `backgroundColor` 和 `color` 的值。
152
152
153
- 當你這樣寫時,你清楚地看到花括號內的 JavaScript 對象 。
153
+ 當你這樣寫時,你清楚地看到大括號內的 JavaScript object 。
154
154
155
155
```js {2-5}
156
156
<ul style={
@@ -161,17 +161,17 @@ ul { padding: 20px 20px 20px 40px; margin: 0; }
161
161
}>
162
162
```
163
163
164
- 下次你在JSX中看到 `{{` 和 `}}` 的時候,要知道它只不過是 JSX 花括號中的一個對象而已 !
164
+ 下次你在JSX中看到 `{{` 和 `}}` 的時候,要知道它只不過是 JSX 大括號中的一個 object 而已 !
165
165
166
166
<Pitfall>
167
167
168
168
內聯的 `style` 屬性是用 camelCase 寫的。例如,HTML `<ul style="background-color: black">` 在你的 component 中應該寫成 `<ul style={{ backgroundColor: ' black' }}>`。
169
169
170
170
</Pitfall>
171
171
172
- ## 更多關於 JavaScript 對象和花括號的樂趣 {/*more-fun-with-javascript-objects-and-curly-braces*/}
172
+ ## 更多關於 JavaScript object 和大括號的樂趣 {/*more-fun-with-javascript-objects-and-curly-braces*/}
173
173
174
- 你可以把幾個表達式移到一個對像中,並在你的 JSX 中使用花括號引用它們 。
174
+ 你可以把幾個表達式移到一個對像中,並在你的 JSX 中使用大括號引用它們 。
175
175
176
176
<Sandpack>
177
177
@@ -211,7 +211,7 @@ body > div > div { padding: 20px; }
211
211
212
212
</Sandpack >
213
213
214
- 在這個例子中,` person ` 的 JavaScript 對象包含一個 ` name ` string 和一個 ` theme ` 對象 。
214
+ 在這個例子中,` person ` 的 JavaScript object 包含一個 ` name ` string 和一個 ` theme ` object 。
215
215
216
216
``` js
217
217
const person = {
@@ -237,9 +237,9 @@ JSX 是非常簡潔的模板語言,因為它允許使用 JavaScript 來組織
237
237
現在你已經幾乎了解 JSX 的所有內容:
238
238
239
239
* 在引號內的 JSX attributes 被傳遞為字符串。
240
- * 花括號可以讓你將 JavaScript 邏輯和變量帶入標籤中。
240
+ * 大括號可以讓你將 JavaScript 邏輯和變量帶入標籤中。
241
241
* 它們可以在 JSX 標籤內容內部或在屬性中的 = 後立即使用。
242
- * `{{` 和 `}}` 不是特殊的語法:它是一個被包含在 JSX 花括號內的 JavaScript 對象 。
242
+ * `{{` 和 `}}` 不是特殊的語法:它是一個被包含在 JSX 大括號內的 JavaScript object 。
243
243
244
244
</Recap>
245
245
@@ -289,11 +289,11 @@ body > div > div { padding: 20px; }
289
289
290
290
你能找到問題所在嗎?
291
291
292
- <Hint >看一下花括號裡的內容 。我們是否把正確的東西放在那裡? </Hint >
292
+ <Hint >看一下大括號裡的內容 。我們是否把正確的東西放在那裡? </Hint >
293
293
294
294
<Solution >
295
295
296
- 發生這種情況是因為這個例子將* 一個對象本身 * 渲染到標籤中,而不是一個字符串。 ` <h1>{person}'s Todos</h1> ` 將試圖渲染整個 ` person ` 對象 ! 使用原始對像作為文本內容會拋出一個錯誤,因為React不知道你想如何顯示它們。
296
+ 發生這種情況是因為這個例子將* 一個 object 本身 * 渲染到標籤中,而不是一個字符串。 ` <h1>{person}'s Todos</h1> ` 將試圖渲染整個 ` person ` object ! 使用原始對像作為文本內容會拋出一個錯誤,因為React不知道你想如何顯示它們。
297
297
298
298
要解決這個問題,將 ` <h1>{person}'s Todos</h1> ` 改為 ` <h1>{person.name}'s Todos</h1> ` 。
299
299
@@ -381,7 +381,7 @@ body > div > div { padding: 20px; }
381
381
382
382
<Solution >
383
383
384
- 將圖片 URL 移到一個名為 ` person.imageUrl ` 的屬性中,然後在 ` <img> ` 標籤中使用花括號讀取它 :
384
+ 將圖片 URL 移到一個名為 ` person.imageUrl ` 的屬性中,然後在 ` <img> ` 標籤中使用大括號讀取它 :
385
385
386
386
<Sandpack >
387
387
@@ -424,13 +424,13 @@ body > div > div { padding: 20px; }
424
424
425
425
</Solution>
426
426
427
- #### 在 JSX 的花括號中寫表達式 {/*write-an-expression-inside-jsx-curly-braces*/}
427
+ #### 在 JSX 的大括號中寫表達式 {/*write-an-expression-inside-jsx-curly-braces*/}
428
428
429
429
在下面的對像中,完整的圖片 URL 被分成四個部分:base URL、`imageId`、`imageSize` 和文件擴展名。
430
430
431
431
我們希望將這些 attributes 組合在一起形成完整的圖片 URL:基礎 URL(始終為 `https://i.imgur.com/`)、`imageId`(`7vQD0fP`)、`imageSize`(`s`)和文件擴展名(始終為 `.jpg`)。然而,下面 `<img>` 標籤的 src 指定方式存在問題。
432
432
433
- 你能修復它嗎 ?
433
+ 你能修正它嗎 ?
434
434
435
435
<Sandpack>
436
436
@@ -474,14 +474,14 @@ body > div > div { padding: 20px; }
474
474
475
475
</Sandpack>
476
476
477
- 要檢查你的修復是否生效 ,請嘗試將 `imageSize` 的值更改為 `' b' `。在你的編輯後,該圖像應該會改變大小 。
477
+ 要檢查你的修正是否生效 ,請嘗試將 `imageSize` 的值更改為 `' b' `。在編輯後,圖片應該會改變大小 。
478
478
479
479
<Solution>
480
480
481
481
你可以將其寫成 `src={baseUrl + person.imageId + person.imageSize + ' .jpg ' }`。
482
482
483
483
1. `{` 開始 JavaScript 表達式
484
- 2. `baseUrl + person.imageId + person.imageSize + ' .jpg ' ` 生成正確的 URL string
484
+ 2. `baseUrl + person.imageId + person.imageSize + ' .jpg ' ` 產生正確的 URL string
485
485
3. `}` 結束 JavaScript 表達式
486
486
487
487
<Sandpack>
@@ -525,7 +525,7 @@ body > div > div { padding: 20px; }
525
525
526
526
</Sandpack>
527
527
528
- 你也可以將這個表達式移到一個單獨的函數中 ,如下面的 `getImageUrl` 函數 :
528
+ 你也可以將這個表達式移到一個單獨的函式中 ,如下面的 `getImageUrl` 函式 :
529
529
530
530
<Sandpack>
531
531
@@ -580,7 +580,7 @@ body > div > div { padding: 20px; }
580
580
581
581
</Sandpack>
582
582
583
- 變量和函數可以幫助你保持標籤簡潔 !
583
+ 變數和函式可以幫助你保持標籤簡潔 !
584
584
585
585
</Solution>
586
586
0 commit comments