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/components-and-props.md
+44-44Lines changed: 44 additions & 44 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,23 +16,23 @@ prev: rendering-elements.html
16
16
next: state-and-lifecycle.html
17
17
---
18
18
19
-
Components let you split the UI into independent, reusable pieces, and think about each piece in isolation. This page provides an introduction to the idea of components. You can find a [detailed component API reference here](/docs/react-component.html).
19
+
Components cho phép bạn chia UI thành các phần độc lập, có thể tái sử dụng, và hoàn toàn tách biệt nhau. Tài liệu này đem đến những giới thiệu sơ lược về components. Bạn có thể tìm [tài liệu chi tiết về API ở đây](/docs/react-component.html).
20
20
21
-
Conceptually, components are like JavaScript functions. They accept arbitrary inputs (called "props") and return React elements describing what should appear on the screen.
21
+
Về mặt khái niệm, components cũng giống như các hàm Javascript. Chúng nhận vào bất kì đầu vào nào (còn được gọi là "props") và trả về các React elements mô tả những gì sẽ xuất hiện trên màn hình.
22
22
23
-
## Function and Class Components {#function-and-class-components}
23
+
## Function Components và Class Components {#function-and-class-components}
24
24
25
-
The simplest way to define a component is to write a JavaScript function:
25
+
Cách đơn giản nhất để định nghĩa một component đó là viết một hàm JavaScript:
26
26
27
27
```js
28
28
functionWelcome(props) {
29
29
return<h1>Hello, {props.name}</h1>;
30
30
}
31
31
```
32
32
33
-
This function is a valid React component because it accepts a single "props" (which stands for properties) object argument with data and returns a React element. We call such components "function components" because they are literally JavaScript functions.
33
+
Hàm này là một React component hợp lệ về nó nhận đầu vào là một tham số object "props" (viết tắt của properties) với dữ liệu và trả về một React element. Chúng ta gọi các components này là "function components" vì chúng là các hàm JavaScript theo đúng nghĩa đen.
34
34
35
-
You can also use an [ES6 class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes)to define a component:
35
+
Bạn cũng có thể sử dụng [ES6 class](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes)để định nghĩa một component:
36
36
37
37
```js
38
38
classWelcomeextendsReact.Component {
@@ -42,27 +42,27 @@ class Welcome extends React.Component {
42
42
}
43
43
```
44
44
45
-
The above two components are equivalent from React's point of view.
45
+
Hai components phía trên là tương đương nhau dưới góc độ của React.
46
46
47
-
Function and Class components both have some additional features that we will discuss in the [next sections](/docs/state-and-lifecycle.html).
47
+
Function và Class components đều có các tính năng bổ sung khác mà chúng ta sẽ thảo luận ở [phần tiếp theo](/docs/state-and-lifecycle.html).
48
48
49
-
## Rendering a Component {#rendering-a-component}
49
+
## Rendering một Component {#rendering-a-component}
50
50
51
-
Previously, we only encountered React elements that represent DOM tags:
51
+
Ở phần trước, chúng ta mới chỉ đề cập đến các React elements biểu diễn các DOM tags:
52
52
53
53
```js
54
54
constelement=<div />;
55
55
```
56
56
57
-
However, elements can also represent user-defined components:
57
+
Thế nhưng, elements cũng có thể biểu diễn các components do người dùng định nghĩa:
58
58
59
59
```js
60
60
constelement=<Welcome name="Sara"/>;
61
61
```
62
62
63
-
When React sees an element representing a user-defined component, it passes JSX attributes and children to this component as a single object. We call this object "props".
63
+
Khi React thấy một element biểu diễn component do người dùng định nghĩa, nó ssẽ truyền các thuộc tính JSX và các phần tử con vào component này như là một object (đối tượng). Chúng ta gọi object đó là "props".
64
64
65
-
For example, this code renders "Hello, Sara" on the page:
65
+
Ví dụ, đoạn code này render ra "Hello, Sara" trên page:
2. React calls the`Welcome` component with`{name: 'Sara'}`as the props.
85
-
3.Our `Welcome` component returns a `<h1>Hello, Sara</h1>` element as the result.
86
-
4. React DOM efficiently updates the DOM to match`<h1>Hello, Sara</h1>`.
83
+
1.Chúng ta gọi `ReactDOM.render()`với`<Welcome name="Sara" />` element.
84
+
2. React gọi đến`Welcome` component với`{name: 'Sara'}`là props.
85
+
3.`Welcome` component của chúng ta trả về kết quả là `<h1>Hello, Sara</h1>` element.
86
+
4. React DOM sẽ cập nhật DOM để hiển thị`<h1>Hello, Sara</h1>`.
87
87
88
-
>**Note:**Always start component names with a capital letter.
88
+
>**Chú ý:**Luôn luôn bắt đầu tên của component bằng chữ in hoa.
89
89
>
90
-
>React treats components starting with lowercase letters as DOM tags. For example, `<div />`represents an HTML div tag, but`<Welcome />`represents a component and requires `Welcome`to be in scope.
90
+
>React xử lí các components bắt đầu với chữ thường giống như các DOM tags. Ví dụ, `<div />`biểu diễn HTML div tag, nhưng`<Welcome />`biểu diễn một component và yêu cầu `Welcome`nằm trong scope.
91
91
>
92
-
>To learn more about the reasoning behind this convention, please read[JSX In Depth](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized).
92
+
>Để hiểu hơn về cách viết này, hãy đọc[JSX Chuyên Sâu](/docs/jsx-in-depth.html#user-defined-components-must-be-capitalized).
93
93
94
-
## Composing Components {#composing-components}
94
+
## Tạo Components {#composing-components}
95
95
96
-
Components can refer to other components in their output. This lets us use the same component abstraction for any level of detail. A button, a form, a dialog, a screen: in React apps, all those are commonly expressed as components.
96
+
Các components có thể tham chiếu đến các components khác tại đầu ra của chúng. Điều này cho phép chúng ta sử dụng cùng một component abstraction cho mọi mức độ chi tiết. Một button, form, dialog, màn hình: trong React apps, chúng đều được hiển thị như là các components.
97
97
98
-
For example, we can create an `App` component that renders `Welcome`many times:
98
+
Ví dụ, chúng ta có thể tạo ra `App` component mà nó sẽ render ra `Welcome`nhiều lần:
Typically, new React apps have a single `App` component at the very top. However, if you integrate React into an existing app, you might start bottom-up with a small component like `Button`and gradually work your way to the top of the view hierarchy.
123
+
Thông thường, các React apps mới tạo sẽ có một `App` component ở tầng cao nhất. Thế nhưng, nếu bạn tích hợp React vào ứng dụng hiện có, bạn có thể bắt đầu bằng cách tiếp cận bottom-up với một component nhỏ như là `Button`và dần dần đi lên các tầng trên cùng của cây kế thừa giao diện.
124
124
125
-
## Extracting Components {#extracting-components}
125
+
## Tách Components {#extracting-components}
126
126
127
-
Don't be afraid to split components into smaller components.
127
+
Đừng ngại ngần việc tách components thành các components nhỏ hơn.
It accepts`author` (an object), `text` (a string), and`date` (a date) as props, and describes a comment on a social media website.
157
+
Nó nhận`author` (một object), `text` (một sâu kí tự), và`date` (ngày tháng) làm props, và mô phỏng lại một bình luận trên mạng xã hội.
158
158
159
-
This component can be tricky to change because of all the nesting, and it is also hard to reuse individual parts of it. Let's extract a few components from it.
159
+
Component này có thể khó để thay đổi vì cấu trúc lồng nhau, đồng thời cũng khó có thể tái sử dụng lại các thành phần con bên trong nó. Hãy thử chia một vài components từ nó.
160
160
161
-
First, we will extract`Avatar`:
161
+
Đầu tiên, chúng ta sẽ chia`Avatar`:
162
162
163
163
```js{3-6}
164
164
function Avatar(props) {
@@ -171,11 +171,11 @@ function Avatar(props) {
171
171
}
172
172
```
173
173
174
-
The `Avatar`doesn't need to know that it is being rendered inside a `Comment`. This is why we have given its prop a more generic name: `user`rather than`author`.
174
+
`Avatar`không cần phải biết nó đang được render bên trong `Comment`. Đây là lí do tại sao chúng ta truyền vào nó một prop với cái tên tổng quát là: `user`thay vì`author`.
175
175
176
-
We recommend naming props from the component's own point of view rather than the context in which it is being used.
176
+
Chúng tôi khuyến khích việc đặt tên cho props dựa trên góc nhìn từ chính component hơn là ngữ cảnh mà component được sử dụng.
177
177
178
-
We can now simplify `Comment`a tiny bit:
178
+
Chúng ta có thể đơn giản hoá `Comment`đi một chút:
179
179
180
180
```js{5}
181
181
function Comment(props) {
@@ -198,7 +198,7 @@ function Comment(props) {
198
198
}
199
199
```
200
200
201
-
Next, we will extract a `UserInfo` component that renders an`Avatar`next to the user's name:
201
+
Tiếp theo, chúng ta sẽ chia component `UserInfo`, component này sẽ render`Avatar`bên cạnh tên của user:
202
202
203
203
```js{3-8}
204
204
function UserInfo(props) {
@@ -213,7 +213,7 @@ function UserInfo(props) {
213
213
}
214
214
```
215
215
216
-
This lets us simplify `Comment`even further:
216
+
Điều này giúp chúng ta có thể đơn giản hoá `Comment`hơn nữa:
Extracting components might seem like grunt work at first, but having a palette of reusable components pays off in larger apps. A good rule of thumb is that if a part of your UI is used several times (`Button`, `Panel`, `Avatar`), or is complex enough on its own (`App`, `FeedStory`, `Comment`), it is a good candidate to be extracted to a separate component.
236
+
Chia các components ngay từ đầu là một công việc không đơn giản, nhưng bù lại chúng ta sẽ có được một tập hợp các components có thể tái sử dụng trong các ứng dụng lớn hơn khác. Một nguyên tắc quan trọng đó là nếu một phần UI của bạn được sử dụng lại nhiều lần (`Button`, `Panel`, `Avatar`), hoặc đủ phức tạp (`App`, `FeedStory`, `Comment`), thì đó là thời điểm thích hợp để chia chúng thành các component riêng.
237
237
238
-
## Props are Read-Only {#props-are-read-only}
238
+
## Props chỉ dùng để đọc {#props-are-read-only}
239
239
240
-
Whether you declare a component [as a function or a class](#function-and-class-components), it must never modify its own props. Consider this `sum`function:
240
+
Khi bạn định nghĩa một component [dưới dạng function hoặc class](#function-and-class-components), thì nó không được phép thay đổi props của chính nó. Hãy cùng phân tích hàm `sum`dưới đây:
241
241
242
242
```js
243
243
functionsum(a, b) {
244
244
return a + b;
245
245
}
246
246
```
247
247
248
-
Such functions are called ["pure"](https://en.wikipedia.org/wiki/Pure_function)because they do not attempt to change their inputs, and always return the same result for the same inputs.
248
+
Các hàm này được gọi là ["pure"](https://en.wikipedia.org/wiki/Pure_function)vì chúng không thay đổi giá trị của tham số đầu vào, và luôn trả về cùng một kết quả với các tham số đầu vào giống nhau.
249
249
250
-
In contrast, this function is impure because it changes its own input:
250
+
Ngược lại, hàm dưới đây được gọi là impure vì nó thay đổi giá trị của tham số đầu vào:
251
251
252
252
```js
253
253
functionwithdraw(account, amount) {
254
254
account.total-= amount;
255
255
}
256
256
```
257
257
258
-
React is pretty flexible but it has a single strict rule:
258
+
React có tính khả chuyển cao nhưng nó cũng có một quy tắc riêng:
259
259
260
-
**All React components must act like pure functions with respect to their props.**
260
+
**Mọi React components đều phải giống như các pure functions đối với props của chúng.**
261
261
262
-
Of course, application UIs are dynamic and change over time. In the [next section](/docs/state-and-lifecycle.html), we will introduce a new concept of "state". State allows React components to change their output over time in response to user actions, network responses, and anything else, without violating this rule.
262
+
Tất nhiên, giao diện của ứng dụng là động và luôn luôn thay đổi theo thời gian. Trong [phần tiếp theo](/docs/state-and-lifecycle.html), chúng tôi sẽ giới thiệu một khái niệm mới, đó là "state". State cho phép React components thay đổi đầu ra của chúng theo thời gian tương ứng với các hành động của người dùng, network responses, và bất kì thứ gì khác, mà không vi phạm quy tắc đối với React component.
0 commit comments