Skip to content

Commit 9522d18

Browse files
authored
Merge pull request #138 from tuananhhedspibk/translate/components_and_props
Vietnamese translation for React components and props documentation
2 parents 358d660 + a85437b commit 9522d18

File tree

1 file changed

+44
-44
lines changed

1 file changed

+44
-44
lines changed

content/docs/components-and-props.md

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@ prev: rendering-elements.html
1616
next: state-and-lifecycle.html
1717
---
1818

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).
2020

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

23-
## Function and Class Components {#function-and-class-components}
23+
## Function Components và Class Components {#function-and-class-components}
2424

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:
2626

2727
```js
2828
function Welcome(props) {
2929
return <h1>Hello, {props.name}</h1>;
3030
}
3131
```
3232

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

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:
3636

3737
```js
3838
class Welcome extends React.Component {
@@ -42,27 +42,27 @@ class Welcome extends React.Component {
4242
}
4343
```
4444

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

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 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).
4848

49-
## Rendering a Component {#rendering-a-component}
49+
## Rendering một Component {#rendering-a-component}
5050

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:
5252

5353
```js
5454
const element = <div />;
5555
```
5656

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:
5858

5959
```js
6060
const element = <Welcome name="Sara" />;
6161
```
6262

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".
6464

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:
6666

6767
```js{1,5}
6868
function Welcome(props) {
@@ -78,24 +78,24 @@ ReactDOM.render(
7878

7979
[](codepen://components-and-props/rendering-a-component)
8080

81-
Let's recap what happens in this example:
81+
Chúng ta hãy cùng xem những gì diễn ra ở ví dụ này:
8282

83-
1. We call `ReactDOM.render()` with the `<Welcome name="Sara" />` element.
84-
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'}` 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>`.
8787

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.
8989
>
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.
9191
>
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).
9393
94-
## Composing Components {#composing-components}
94+
## Tạo Components {#composing-components}
9595

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

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:
9999

100100
```js{8-10}
101101
function Welcome(props) {
@@ -120,13 +120,13 @@ ReactDOM.render(
120120

121121
[](codepen://components-and-props/composing-components)
122122

123-
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.
124124

125-
## Extracting Components {#extracting-components}
125+
## Tách Components {#extracting-components}
126126

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

129-
For example, consider this `Comment` component:
129+
Ví dụ, cùng xem component `Comment` dưới đây:
130130

131131
```js
132132
function Comment(props) {
@@ -154,11 +154,11 @@ function Comment(props) {
154154

155155
[](codepen://components-and-props/extracting-components)
156156

157-
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ự), `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.
158158

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ó.
160160

161-
First, we will extract `Avatar`:
161+
Đầu tiên, chúng ta sẽ chia `Avatar`:
162162

163163
```js{3-6}
164164
function Avatar(props) {
@@ -171,11 +171,11 @@ function Avatar(props) {
171171
}
172172
```
173173

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`.
175175

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

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:
179179

180180
```js{5}
181181
function Comment(props) {
@@ -198,7 +198,7 @@ function Comment(props) {
198198
}
199199
```
200200

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:
202202

203203
```js{3-8}
204204
function UserInfo(props) {
@@ -213,7 +213,7 @@ function UserInfo(props) {
213213
}
214214
```
215215

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:
217217

218218
```js{4}
219219
function Comment(props) {
@@ -233,30 +233,30 @@ function Comment(props) {
233233

234234
[](codepen://components-and-props/extracting-components-continued)
235235

236-
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.
237237

238-
## Props are Read-Only {#props-are-read-only}
238+
## Props chỉ dùng để đọc {#props-are-read-only}
239239

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:
241241

242242
```js
243243
function sum(a, b) {
244244
return a + b;
245245
}
246246
```
247247

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

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:
251251

252252
```js
253253
function withdraw(account, amount) {
254254
account.total -= amount;
255255
}
256256
```
257257

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:
259259

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.**
261261

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

Comments
 (0)