You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/docs/fragments.md
+17-17
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ title: Fragments
4
4
permalink: docs/fragments.html
5
5
---
6
6
7
-
A common pattern in React is for a component to return multiple elements. Fragments let you group a list of children without adding extra nodes to the DOM.
7
+
React 其中一種常見的使用情況是在一個 component 中回傳多個 element,fragment 讓你能夠在不用增加額外 DOM 節點的情況下,重新組合 child component。
8
8
9
9
```js
10
10
render() {
@@ -18,11 +18,12 @@ render() {
18
18
}
19
19
```
20
20
21
-
There is also a new [short syntax](#short-syntax) for declaring them.
21
+
還有一種[簡寫語法](#short-syntax)可以用來宣告 fragment。
22
+
<!-- There is also a new [short syntax](#short-syntax) for declaring them. -->
22
23
23
-
## Motivation {#motivation}
24
+
## 動機 {#motivation}
24
25
25
-
A common pattern is for a component to return a list of children. Take this example React snippet:
@@ -38,7 +39,7 @@ class Table extends React.Component {
38
39
}
39
40
```
40
41
41
-
`<Columns />`would need to return multiple `<td>`elements in order for the rendered HTML to be valid. If a parent div was used inside the `render()` of `<Columns />`, then the resulting HTML will be invalid.
42
+
為了使 render 出來的 HTML 是有效的,`<Columns />`需要回傳多個 `<td>`element。如果將 parent div 元素放在 `<Columns />` 中的 `render()` 區塊,將會使生成的 HTML 無效。
42
43
43
44
```jsx
44
45
classColumnsextendsReact.Component {
@@ -53,7 +54,7 @@ class Columns extends React.Component {
53
54
}
54
55
```
55
56
56
-
results in a `<Table />`output of:
57
+
在 `<Table />`內的輸出如下:
57
58
58
59
```jsx
59
60
<table>
@@ -66,9 +67,9 @@ results in a `<Table />` output of:
66
67
</table>
67
68
```
68
69
69
-
Fragments solve this problem.
70
+
這個問題交給 fragment 解決。
70
71
71
-
## Usage {#usage}
72
+
## 使用方式 {#usage}
72
73
73
74
```jsx{4,7}
74
75
class Columns extends React.Component {
@@ -83,7 +84,7 @@ class Columns extends React.Component {
83
84
}
84
85
```
85
86
86
-
which results in a correct `<Table />`output of:
87
+
會讓 `<Table />`得到一個正確的輸出:
87
88
88
89
```jsx
89
90
<table>
@@ -94,9 +95,9 @@ which results in a correct `<Table />` output of:
94
95
</table>
95
96
```
96
97
97
-
### Short Syntax {#short-syntax}
98
+
### 簡寫語法 {#short-syntax}
98
99
99
-
There is a new, shorter syntax you can use for declaring fragments. It looks like empty tags:
100
+
你可以用新的簡寫語法來宣告 fragment,它看起來就像空標籤:
100
101
101
102
```jsx{4,7}
102
103
class Columns extends React.Component {
@@ -110,19 +111,18 @@ class Columns extends React.Component {
110
111
}
111
112
}
112
113
```
113
-
114
-
You can use `<></>` the same way you'd use any other element except that it doesn't support keys or attributes.
Fragments declared with the explicit `<React.Fragment>`syntax may have keys. A use case for this is mapping a collection to an array of fragments -- for example, to create a description list:
118
+
透過明確宣告 `<React.Fragment>`的 fragment 可能會遇到帶有 key 的情況。一個使用案例是將它 mapping 到 fragment array。舉例來說,像下方程式碼一樣建立一個敘述列表:
119
119
120
120
```jsx
121
121
functionGlossary(props) {
122
122
return (
123
123
<dl>
124
124
{props.items.map(item=> (
125
-
//Without the `key`, React will fire a key warning
125
+
//如果缺少 key , React 會發出一個缺少 key 的警告
126
126
<React.Fragment key={item.id}>
127
127
<dt>{item.term}</dt>
128
128
<dd>{item.description}</dd>
@@ -133,8 +133,8 @@ function Glossary(props) {
133
133
}
134
134
```
135
135
136
-
`key`is the only attribute that can be passed to `Fragment`. In the future, we may add support for additional attributes, such as event handlers.
0 commit comments