Skip to content

Commit b2a9136

Browse files
phonglknampdn
authored andcommitted
Translate Introducing JSX (#7)
* trans why jsx * trans embedding-expressions-in-jsx * trans jsx-is-an-expression-too * trans specifying-attributes-with-jsx * trans jsx-prevents-injection-attacks * trans complete for introducing jsx * fix some keywords * address pr comments
1 parent 89ccd57 commit b2a9136

File tree

1 file changed

+41
-41
lines changed

1 file changed

+41
-41
lines changed

content/docs/introducing-jsx.md

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
---
22
id: introducing-jsx
3-
title: Introducing JSX
3+
title: Giới thiệu JSX
44
permalink: docs/introducing-jsx.html
55
prev: hello-world.html
66
next: rendering-elements.html
77
---
88

9-
Consider this variable declaration:
9+
Xem xét khai báo biến dưới đây:
1010

1111
```js
1212
const element = <h1>Hello, world!</h1>;
1313
```
1414

15-
This funny tag syntax is neither a string nor HTML.
15+
Cú pháp thẻ này không phải là một chuỗi kí tự cũng không phải là một thẻ HTML
1616

17-
It is called JSX, and it is a syntax extension to JavaScript. We recommend using it with React to describe what the UI should look like. JSX may remind you of a template language, but it comes with the full power of JavaScript.
17+
Nó được gọi là JSX, là một cú pháp mở rộng cho JavaScript. Chúng tôi khuyến khích sử dụng JSX với React để mô tả giao diện (UI). JSX có thể trông giống Ngôn ngữ Khuôn mẫu (Template language), nhưng JSX đi kèm với toàn bộ tính năng của JavaScript.
1818

19-
JSX produces React "elements". We will explore rendering them to the DOM in the [next section](/docs/rendering-elements.html). Below, you can find the basics of JSX necessary to get you started.
19+
JSX cho ra những "phần tử"(Element) React. Chúng ta sẽ khám phá việc chúng được render vào DOM như thế nào ở [phần tiếp theo](/docs/rendering-elements.html). Dưới đây là những kiến thức cần thiết cơ bản của JSX để có thể bắt đầu.
2020

21-
### Why JSX? {#why-jsx}
21+
### Tại sao lại là JSX? {#why-jsx}
2222

23-
React embraces the fact that rendering logic is inherently coupled with other UI logic: how events are handled, how the state changes over time, and how the data is prepared for display.
23+
React khuyến khích một thực tế là logic của render được kết hợp một cách tự nhiên với những logic khác liên quan tới UI: Các sự kiện được xử lý như thế nào, state thay đổi như thế nào theo thời gian và dữ liệu được chuẩn bị như thế nào cho việc hiển thị.
2424

25-
Instead of artificially separating *technologies* by putting markup and logic in separate files, React [separates *concerns*](https://en.wikipedia.org/wiki/Separation_of_concerns) with loosely coupled units called "components" that contain both. We will come back to components in a [further section](/docs/components-and-props.html), but if you're not yet comfortable putting markup in JS, [this talk](https://www.youtube.com/watch?v=x7cQ3mrcKaY) might convince you otherwise.
25+
Thay vì tách biệt các *công nghệ* một cách giả tạo bằng cách đưa định nghĩa giao diện và logic vào những tệp khác nhau, React [tách bạch *mối quan hệ*](https://en.wikipedia.org/wiki/Separation_of_concerns) bằng những đơn vị rời rạc gọi là "components" chứa cả hai cái trên. Chúng ta sẽ bàn về components trong một [phần khác](/docs/components-and-props.html), nếu bạn vẫn chưa cảm thấy thoải mái việc đưa các định nghĩa giao diện vào trong JS, [buổi nói chuyện này](https://www.youtube.com/watch?v=x7cQ3mrcKaY) có thể thuyết phục bạn.
2626

27-
React [doesn't require](/docs/react-without-jsx.html) using JSX, but most people find it helpful as a visual aid when working with UI inside the JavaScript code. It also allows React to show more useful error and warning messages.
27+
React [Không bắt buộc](/docs/react-without-jsx.html) sử dụng JSX, nhưng phần lớn mọi người đều cho rằng nó hữu dụng khi làm việc với giao diện (UI) trong mã JavaScript. JSX cũng cho phép React hiển thị những thông báo lỗi và "lời cảnh báo" (warning) hữu ích hơn.
2828

29-
With that out of the way, let's get started!
29+
Vậy bắt đầu thôi!
3030

31-
### Embedding Expressions in JSX {#embedding-expressions-in-jsx}
31+
### Nhúng Biểu thức trong JSX {#embedding-expressions-in-jsx}
3232

33-
In the example below, we declare a variable called `name` and then use it inside JSX by wrapping it in curly braces:
33+
Ở ví dụ dưới, chúng ta khai báo một biến tên là `name` và dùng bên trong JSX bằng cách bao trong cặp dấu ngoặc nhọn:
3434

3535
```js{1,2}
3636
const name = 'Josh Perez';
@@ -42,9 +42,9 @@ ReactDOM.render(
4242
);
4343
```
4444

45-
You can put any valid [JavaScript expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) inside the curly braces in JSX. For example, `2 + 2`, `user.firstName`, or `formatName(user)` are all valid JavaScript expressions.
45+
Bạn có thể nhúng bất kỳ [biểu thức JavaScript hợp lệ](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Expressions) bên trong JSX bằng cặp dấu ngoặc nhọn. Ví dụ, `2 + 2`, `user.firstName`, hoặc `formatName(user)` đều là các biểu thức hợp lệ của JavaScript.
4646

47-
In the example below, we embed the result of calling a JavaScript function, `formatName(user)`, into an `<h1>` element.
47+
Ở ví dụ dưới, chúng ta nhúng kết quả của một hàm JavaScript, `formatName(user)`, vào bên trong phần tử `<h1>`.
4848

4949
```js{12}
5050
function formatName(user) {
@@ -70,13 +70,13 @@ ReactDOM.render(
7070

7171
[](codepen://introducing-jsx)
7272

73-
We split JSX over multiple lines for readability. While it isn't required, when doing this, we also recommend wrapping it in parentheses to avoid the pitfalls of [automatic semicolon insertion](http://stackoverflow.com/q/2846283).
73+
Chúng ta có thể tách JSX vào những tệp khác nhau cho dễ đọc. Việc này không bắt buộc, nhưng khi làm như vậy, chúng tôi cũng khuyến khích nhúng trong cặp dấu ngoặc để tránh rơi vào trường hợp JS Engines [tự thêm chấm phẩy](http://stackoverflow.com/q/2846283).
7474

75-
### JSX is an Expression Too {#jsx-is-an-expression-too}
75+
### JSX cũng là một biểu thức {#jsx-is-an-expression-too}
7676

77-
After compilation, JSX expressions become regular JavaScript function calls and evaluate to JavaScript objects.
77+
Sau khi biên dịch (compile), biểu thức JSX là những gọi hàm bình thường của JavaScript và thành những đối tượng JavaScript sau khi được gọi.
7878

79-
This means that you can use JSX inside of `if` statements and `for` loops, assign it to variables, accept it as arguments, and return it from functions:
79+
Điều này có nghĩa là bạn có thể dùng JSX bên trong câu lệnh `if` cũng như vòng lặp `for`, gán nó cho biến, dùng như tham số hàm, và trả về JSX từ hàm.
8080

8181
```js{3,5}
8282
function getGreeting(user) {
@@ -87,37 +87,37 @@ function getGreeting(user) {
8787
}
8888
```
8989

90-
### Specifying Attributes with JSX {#specifying-attributes-with-jsx}
90+
### Xác định thuộc tính của thẻ với JSX {#specifying-attributes-with-jsx}
9191

92-
You may use quotes to specify string literals as attributes:
92+
Bạn có thể dùng dấu nháy để khai báo một chuỗi như là thuộc tính của thẻ:
9393

9494
```js
9595
const element = <div tabIndex="0"></div>;
9696
```
9797

98-
You may also use curly braces to embed a JavaScript expression in an attribute:
98+
Bạn có thể dùng dấu ngoặc nhọn để nhúng một biểu thức Javascript vào trong thuộc tính:
9999

100100
```js
101101
const element = <img src={user.avatarUrl}></img>;
102102
```
103103

104-
Don't put quotes around curly braces when embedding a JavaScript expression in an attribute. You should either use quotes (for string values) or curly braces (for expressions), but not both in the same attribute.
104+
Đừng để dấu nháy xung quanh ngoặc nhọn khi nhúng biểu thức JavaScript vào trong một thuộc tính. Bạn có thể dùng dấu nháy (cho giá trị chuỗi) hoặc ngoặc nhọn (cho biểu thức), nhưng không được dùng cả hai cho cùng 1 thuộc tính.
105105

106-
>**Warning:**
106+
>**CẢNH BÁO:**
107107
>
108-
>Since JSX is closer to JavaScript than to HTML, React DOM uses `camelCase` property naming convention instead of HTML attribute names.
108+
> JSX gần với JavaScript hơn là so với HTML, React DOM sử dụng chuẩn quy tắc đặt tên `camelCase` cho thuộc tính thay vì dùng tên thuộc tính gốc của HTML.
109109
>
110-
>For example, `class` becomes [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) in JSX, and `tabindex` becomes [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
110+
>Ví dụ, `class` trở thành [`className`](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) trong JSX, `tabindex` trở thành [`tabIndex`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex).
111111
112-
### Specifying Children with JSX {#specifying-children-with-jsx}
112+
### Dùng thẻ con trong JSX {#specifying-children-with-jsx}
113113

114-
If a tag is empty, you may close it immediately with `/>`, like XML:
114+
Nếu tag rỗng (không có thẻ con), bạn có thể đóng nó ngay lập tức với `/>`, giống XML:
115115

116116
```js
117117
const element = <img src={user.avatarUrl} />;
118118
```
119119

120-
JSX tags may contain children:
120+
Thẻ JSX có thể chứa thẻ con:
121121

122122
```js
123123
const element = (
@@ -128,23 +128,23 @@ const element = (
128128
);
129129
```
130130

131-
### JSX Prevents Injection Attacks {#jsx-prevents-injection-attacks}
131+
### JSX chống tấn công kiểu Injection {#jsx-prevents-injection-attacks}
132132

133-
It is safe to embed user input in JSX:
133+
Việc nhúng đầu vào của người dùng trong JSX là an toàn:
134134

135135
```js
136136
const title = response.potentiallyMaliciousInput;
137-
// This is safe:
137+
// Việc này an toàn:
138138
const element = <h1>{title}</h1>;
139139
```
140140

141-
By default, React DOM [escapes](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) any values embedded in JSX before rendering them. Thus it ensures that you can never inject anything that's not explicitly written in your application. Everything is converted to a string before being rendered. This helps prevent [XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting) attacks.
141+
Mặc định, React DOM [loại bỏ những kí tự đặc biệt](http://stackoverflow.com/questions/7381974/which-characters-need-to-be-escaped-on-html) ở bên trong bất kì giá trị nào được nhúng vào JSX trước khi render chúng. Việc này đảm bảo không có giá trị xấu nào được vô tình được đưa vào ứng dụng. Mọi thứ đều được chuyển thành chuỗi trước khi được render. Việc này giúp ngăn chặn phương thức [tấn công XSS (cross-site-scripting)](https://en.wikipedia.org/wiki/Cross-site_scripting).
142142

143-
### JSX Represents Objects {#jsx-represents-objects}
143+
### JSX là đối tượng {#jsx-represents-objects}
144144

145-
Babel compiles JSX down to `React.createElement()` calls.
145+
Babel biên dịch JSX thành những câu gọi hàm `React.createElement()`.
146146

147-
These two examples are identical:
147+
Hai ví dụ dưới đây là tương tự:
148148

149149
```js
150150
const element = (
@@ -162,10 +162,10 @@ const element = React.createElement(
162162
);
163163
```
164164

165-
`React.createElement()` performs a few checks to help you write bug-free code but essentially it creates an object like this:
165+
`React.createElement()` thực hiện một số kiểm tra để giúp bạn viết mã không bị lỗi nhưng cơ bản nó tạo một đối tượng giống thế này:
166166

167167
```js
168-
// Note: this structure is simplified
168+
// Lưu ý: cấu trúc nãy đã được đơn giản hoá
169169
const element = {
170170
type: 'h1',
171171
props: {
@@ -175,10 +175,10 @@ const element = {
175175
};
176176
```
177177

178-
These objects are called "React elements". You can think of them as descriptions of what you want to see on the screen. React reads these objects and uses them to construct the DOM and keep it up to date.
178+
Những đối tượng này được gọi là "Những phần tử React" (React elements). Bạn có thể xem chúng như là mô tả những gì bạn muốn thấy trên màn hình. React đọc những đối tượng này và dùng chúng để xây dựng DOM và cập nhật nó.
179179

180-
We will explore rendering React elements to the DOM in the next section.
180+
Chúng ta sẽ khám phá cách các React Element được render vào DOM thế nào trong phần kế tiếp.
181181

182-
>**Tip:**
182+
>**Gợi ý:**
183183
>
184-
>We recommend using the ["Babel" language definition](http://babeljs.io/docs/editors) for your editor of choice so that both ES6 and JSX code is properly highlighted. This website uses the [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/) color scheme which is compatible with it.
184+
>Chúng tôi khuyến khích sử dụng [Định nghĩa ngôn ngữ "Babel"](http://babeljs.io/docs/editors) cho trình soạn thảo của bạn như vậy cả mã ES6 JSX đều có thể được tô sáng rõ ràng. Trang web này dùng tập màu [Oceanic Next](https://labs.voronianski.com/oceanic-next-color-scheme/) cái mà phù hợp cho việc này.

0 commit comments

Comments
 (0)