Skip to content

Commit fa74abe

Browse files
committed
feat(i18n): translate src/content/learn/adding-interactivity.md from English to Vietnamese
1 parent 9445a14 commit fa74abe

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/content/learn/adding-interactivity.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Thêm Tính Tương Tác
44

55
<Intro>
66

7-
Một số thứ trên màn hình cập nhật để phản hồi đầu vào của người dùng. Ví dụ, nhấp vào thư viện ảnh sẽ chuyển đổi ảnh đang hoạt động. Trong React, data thay đổi theo thời gian được gọi là *state*. Bạn có thể thêm state vào bất kỳ component nào và cập nhật nó khi cần thiết. Trong chương này, bạn sẽ học cách viết các component xử lý tương tác, cập nhật state của chúng và hiển thị output khác nhau theo thời gian.
7+
Một số thứ trên màn hình cập nhật theo phản hồi đầu vào của người dùng. Ví dụ, nhấp vào thư viện ảnh sẽ chuyển đổi ảnh đang được hiển thị. Trong React, dữ liệu thay đổi theo thời gian được gọi là *state*. Bạn có thể thêm state vào bất kỳ component nào và cập nhật nó khi cần thiết. Trong chương này, bạn sẽ học cách viết các component xử lý tương tác, cập nhật state của chúng và hiển thị kết quả khác nhau theo thời gian.
88

99
</Intro>
1010

@@ -14,17 +14,17 @@ Một số thứ trên màn hình cập nhật để phản hồi đầu vào c
1414
* [Cách làm cho component "nhớ" thông tin với state](/learn/state-a-components-memory)
1515
* [Cách React cập nhật UI trong hai giai đoạn](/learn/render-and-commit)
1616
* [Tại sao state không cập nhật ngay sau khi bạn thay đổi nó](/learn/state-as-a-snapshot)
17-
* [Cách xếp hàng đợi nhiều cập nhật state](/learn/queueing-a-series-of-state-updates)
17+
* [Cách xử lý nhiều lần cập nhật state liên tiếp](/learn/queueing-a-series-of-state-updates)
1818
* [Cách cập nhật một object trong state](/learn/updating-objects-in-state)
1919
* [Cách cập nhật một array trong state](/learn/updating-arrays-in-state)
2020

2121
</YouWillLearn>
2222

23-
## Phản hồi sự kiện {/*responding-to-events*/}
23+
## Bắt sự kiện {/*responding-to-events*/}
2424

25-
React cho phép bạn thêm *event handler* vào JSX của mình. Event handler là các function của riêng bạn sẽ được kích hoạt để phản hồi các tương tác của người dùng như nhấp chuột, di chuột, focus vào input của form, và nhiều hơn nữa.
25+
React cho phép bạn thêm *event handler* vào JSX của mình. Event handler là những function của riêng bạn sẽ được kích hoạt để phản hồi các tương tác của người dùng như nhấp chuột, di chuột, focus vào input của form, và nhiều hơn nữa.
2626

27-
Các component tích hợp sẵn như `<button>` chỉ hỗ trợ các sự kiện tích hợp sẵn của trình duyệt như `onClick`. Tuy nhiên, bạn cũng có thể tạo các component của riêng mình và đặt tên cho các props event handler của chúng theo bất kỳ tên cụ thể cho ứng dụng nào mà bạn thích.
27+
Những component tích hợp sẵn như `<button>` chỉ hỗ trợ các sự kiện tích hợp sẵn của trình duyệt như `onClick`. Tuy nhiên, bạn cũng có thể tạo những component của riêng mình và đặt tên cho các props event handler của chúng theo bất kỳ tên cụ thể cho ứng dụng nào mà bạn thích.
2828

2929
<Sandpack>
3030

@@ -68,15 +68,15 @@ button { margin-right: 10px; }
6868

6969
<LearnMore path="/learn/responding-to-events">
7070

71-
Đọc **[Phản Hồi Sự Kiện](/learn/responding-to-events)** để học cách thêm event handler.
71+
Đọc **[Bắt Sự Kiện](/learn/responding-to-events)** để học cách thêm event handler.
7272

7373
</LearnMore>
7474

7575
## State: bộ nhớ của component {/*state-a-components-memory*/}
7676

77-
Các component thường cần thay đổi những gì hiển thị trên màn hình kết quả của một tương tác. Gõ vào form sẽ cập nhật trường input, nhấp "tiếp theo" trên carousel ảnh sẽ thay đổi ảnh nào được hiển thị, nhấp "mua" sẽ đưa sản phẩm vào giỏ hàng. Các component cần "nhớ" các thứ: giá trị input hiện tại, ảnh hiện tại, giỏ hàng. Trong React, loại bộ nhớ cụ thể của component này được gọi là *state*.
77+
Những component thường cần thay đổi những gì hiển thị trên màn hình theo kết quả của một tương tác. Gõ vào form sẽ cập nhật trường input, nhấp "tiếp theo" trên carousel ảnh sẽ thay đổi ảnh nào được hiển thị, nhấp "mua" sẽ đưa sản phẩm vào giỏ hàng. Những component cần "nhớ" các thứ: giá trị input hiện tại, ảnh hiện tại, giỏ hàng. Trong React, loại bộ nhớ cụ thể của component này được gọi là *state*.
7878

79-
Bạn có thể thêm state vào một component với Hook [`useState`](/reference/react/useState). *Hook*các function đặc biệt cho phép các component của bạn sử dụng các tính năng React (state là một trong những tính năng đó). Hook `useState` cho phép bạn khai báo một biến state. Nó nhận state ban đầu và trả về một cặp giá trị: state hiện tại và một function setter state cho phép bạn cập nhật nó.
79+
Bạn có thể thêm state vào một component với Hook [`useState`](/reference/react/useState). *Hook*những function đặc biệt cho phép những component của bạn sử dụng các tính năng React (state là một trong những tính năng đó). Hook `useState` cho phép bạn khai báo một biến state. Nó nhận state ban đầu và trả về một cặp giá trị: state hiện tại và một function setter state cho phép bạn cập nhật nó.
8080

8181
```js
8282
const [index, setIndex] = useState(0);
@@ -235,9 +235,9 @@ button {
235235

236236
## Render và commit {/*render-and-commit*/}
237237

238-
Trước khi các component của bạn được hiển thị trên màn hình, chúng phải được render bởi React. Hiểu các bước trong quá trình này sẽ giúp bạn suy nghĩ về cách code của bạn thực thi và giải thích hành vi của nó.
238+
Trước khi những component của bạn được hiển thị trên màn hình, chúng phải được render bởi React. Hiểu các bước trong quá trình này sẽ giúp bạn suy nghĩ về cách code của bạn thực thi và giải thích hành vi của nó.
239239

240-
Hãy tưởng tượng rằng các component của bạn là những đầu bếp trong nhà bếp, pha chế những món ăn ngon từ nguyên liệu. Trong kịch bản này, React là người phục vụ nhận yêu cầu từ khách hàng và mang đến cho họ đơn hàng. Quá trình yêu cầu và phục vụ UI có ba bước:
240+
Hãy tưởng tượng rằng những component của bạn là những đầu bếp trong nhà bếp, pha chế những món ăn ngon từ nguyên liệu. Trong kịch bản này, React là người phục vụ nhận yêu cầu từ khách hàng và mang đến cho họ đơn hàng. Quá trình yêu cầu và phục vụ UI có ba bước:
241241

242242
1. **Kích hoạt** một render (chuyển đơn hàng của khách đến nhà bếp)
243243
2. **Render** component (chuẩn bị đơn hàng trong nhà bếp)
@@ -251,21 +251,21 @@ Hãy tưởng tượng rằng các component của bạn là những đầu bế
251251

252252
<LearnMore path="/learn/render-and-commit">
253253

254-
Đọc **[Render và Commit](/learn/render-and-commit)** để học vòng đời của một cập nhật UI.
254+
Đọc **[Render và Commit](/learn/render-and-commit)** để học vòng đời của một lần cập nhật UI.
255255

256256
</LearnMore>
257257

258258
## State như một snapshot {/*state-as-a-snapshot*/}
259259

260-
Không giống như các biến JavaScript thông thường, React state hoạt động giống như một snapshot hơn. Thiết lập nó không thay đổi biến state mà bạn đã có, mà thay vào đó kích hoạt một re-render. Điều này có thể gây ngạc nhiên lúc đầu!
260+
Không giống như những biến JavaScript thông thường, React state hoạt động giống như một snapshot hơn. Thiết lập nó không thay đổi biến state mà bạn đã có, mà thay vào đó kích hoạt một re-render. Điều này có thể gây ngạc nhiên lúc đầu!
261261

262262
```js
263263
console.log(count); // 0
264264
setCount(count + 1); // Yêu cầu một re-render với 1
265265
console.log(count); // Vẫn là 0!
266266
```
267267

268-
Hành vi này giúp bạn tránh các bug tinh vi. Đây là một ứng dụng chat nhỏ. Hãy thử đoán xem điều gì sẽ xảy ra nếu bạn nhấn "Gửi" trước *rồi sau đó* thay đổi người nhận thành Bob. Tên của ai sẽ xuất hiện trong `alert` năm giây sau?
268+
Hành vi này giúp bạn tránh những bug tinh vi. Đây là một ứng dụng chat nhỏ. Hãy thử đoán xem điều gì sẽ xảy ra nếu bạn nhấn "Gửi" trước *rồi sau đó* thay đổi người nhận thành Bob. Tên của ai sẽ xuất hiện trong `alert` năm giây sau?
269269

270270
<Sandpack>
271271

@@ -366,7 +366,7 @@ setScore(score + 1); // setScore(0 + 1);
366366
console.log(score); // 0
367367
```
368368

369-
Bạn có thể sửa điều này bằng cách truyền một *updater function* khi thiết lập state. Chú ý cách thay thế `setScore(score + 1)` bằng `setScore(s => s + 1)` sửa nút "+3". Điều này cho phép bạn xếp hàng đợi nhiều cập nhật state.
369+
Bạn có thể sửa điều này bằng cách truyền một *updater function* khi thiết lập state. Chú ý cách thay thế `setScore(score + 1)` bằng `setScore(s => s + 1)` sửa được nút "+3". Điều này cho phép bạn xếp hàng đợi nhiều lần cập nhật state.
370370

371371
<Sandpack>
372372

@@ -408,9 +408,9 @@ button { display: inline-block; margin: 10px; font-size: 20px; }
408408

409409
## Cập nhật object trong state {/*updating-objects-in-state*/}
410410

411-
State có thể chứa bất kỳ loại giá trị JavaScript nào, bao gồm object. Nhưng bạn không nên thay đổi object và array mà bạn giữ trong React state một cách trực tiếp. Thay vào đó, khi bạn muốn cập nhật một object và array, bạn cần tạo một cái mới (hoặc tạo một bản sao của một cái hiện có), và sau đó cập nhật state để sử dụng bản sao đó.
411+
State có thể chứa bất kỳ loại giá trị JavaScript nào, bao gồm object. Nhưng bạn không nên thay đổi những object và array mà bạn giữ trong React state một cách trực tiếp. Thay vào đó, khi bạn muốn cập nhật một object và array, bạn cần tạo một cái mới (hoặc tạo một bản sao của một cái hiện có), và sau đó cập nhật state để sử dụng bản sao đó.
412412

413-
Thường thì, bạn sẽ sử dụng cú pháp spread `...` để sao chép object và array mà bạn muốn thay đổi. Ví dụ, cập nhật một nested object có thể trông như thế này:
413+
Thường thì, bạn sẽ sử dụng cú pháp spread `...` để sao chép những object và array mà bạn muốn thay đổi. Ví dụ, cập nhật một nested object có thể trông như thế này:
414414

415415
<Sandpack>
416416

@@ -518,7 +518,7 @@ img { width: 200px; height: 200px; }
518518

519519
</Sandpack>
520520

521-
Nếu việc sao chép object trong code trở nên tẻ nhạt, bạn có thể sử dụng một thư viện như [Immer](https://github.com/immerjs/use-immer) để giảm code lặp lại:
521+
Nếu việc sao chép object trong code trở nên tẻ nhạt, bạn có thể sử dụng một thư viện như [Immer](https://github.com/immerjs/use-immer) để giảm thiểu code lặp lại:
522522

523523
<Sandpack>
524524

@@ -639,7 +639,7 @@ img { width: 200px; height: 200px; }
639639

640640
## Cập nhật array trong state {/*updating-arrays-in-state*/}
641641

642-
Array là một loại object JavaScript có thể thay đổi khác mà bạn có thể lưu trữ trong state nên coi như chỉ đọc. Giống như với object, khi bạn muốn cập nhật một array được lưu trữ trong state, bạn cần tạo một cái mới (hoặc tạo một bản sao của một cái hiện có), và sau đó thiết lập state để sử dụng array mới:
642+
Array là một loại object JavaScript có thể thay đổi (mutable) khác mà bạn có thể lưu trữ trong state, nhưng nên coi như chỉ đọc được (read-only). Giống như với object, khi bạn muốn cập nhật một array được lưu trữ trong state, bạn cần tạo một cái mới (hoặc tạo một bản sao của một cái hiện có), và sau đó thiết lập state để sử dụng array mới:
643643

644644
<Sandpack>
645645

@@ -705,7 +705,7 @@ function ItemList({ artworks, onToggle }) {
705705

706706
</Sandpack>
707707

708-
Nếu việc sao chép array trong code trở nên tẻ nhạt, bạn có thể sử dụng một thư viện như [Immer](https://github.com/immerjs/use-immer) để giảm code lặp lại:
708+
Nếu việc sao chép array trong code trở nên tẻ nhạt, bạn có thể sử dụng một thư viện như [Immer](https://github.com/immerjs/use-immer) để giảm thiểu code lặp lại:
709709

710710
<Sandpack>
711711

@@ -795,6 +795,6 @@ function ItemList({ artworks, onToggle }) {
795795

796796
## Tiếp theo là gì? {/*whats-next*/}
797797

798-
Hãy đến [Phản Hồi Sự Kiện](/learn/responding-to-events) để bắt đầu đọc chương này từng trang một!
798+
Hãy đến [Bắt Sự Kiện](/learn/responding-to-events) để bắt đầu đọc chương này từng trang một!
799799

800800
Hoặc, nếu bạn đã quen thuộc với những chủ đề này, tại sao không đọc về [Quản Lý State](/learn/managing-state)?

0 commit comments

Comments
 (0)