Skip to content

Commit 537f1ed

Browse files
committed
feat(i18n): translate src/content/learn/queueing-a-series-of-state-updates.md from English to Vietnamese
1 parent 9bffd22 commit 537f1ed

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/content/learn/queueing-a-series-of-state-updates.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
---
2-
title: Xếp hàng đợi cho một chuỗi các cập nhật state
2+
title: Xử lí hàng đợi cho một chuỗi các cập nhật state liên tiếp
33
---
44

55
<Intro>
66

7-
Thiết lập một biến state sẽ đưa một lần render khác vào hàng đợi. Nhưng đôi khi bạn có thể muốn thực hiện nhiều thao tác trên giá trị đó trước khi đưa lần render tiếp theo vào hàng đợi. Để làm điều này, sẽ hữu ích khi hiểu cách React gom nhóm các cập nhật state.
7+
Thiết lập một biến state sẽ đưa một lần render khác vào hàng đợi. Nhưng đôi khi bạn có thể muốn thực hiện nhiều thao tác trên giá trị đó trước khi đưa lần render tiếp theo vào hàng đợi. Để làm điều này, bạn nên hiểu cách React gom nhóm các cập nhật state.
88

99
</Intro>
1010

1111
<YouWillLearn>
1212

13-
* "Batching" là gì và React sử dụng nó như thế nào để xử lý nhiều cập nhật state
13+
* "Batching" (gom nhóm) là gì và React sử dụng nó như thế nào để xử lý nhiều cập nhật state
1414
* Cách áp dụng liên tiếp nhiều cập nhật cho cùng một biến state
1515

1616
</YouWillLearn>
@@ -99,7 +99,7 @@ h1 { display: inline-block; margin: 10px; width: 30px; text-align: center; }
9999

100100
</Sandpack>
101101

102-
Ở đây, `n => n + 1` được gọi là **updater function.** Khi bạn truyền nó cho một state setter:
102+
Ở đây, `n => n + 1` được gọi là **updater (cập nhật) function.** Khi bạn truyền nó cho một state setter:
103103

104104
1. React đưa function này vào hàng đợi để được xử lý sau khi tất cả code khác trong event handler đã chạy.
105105
2. Trong lần render tiếp theo, React duyệt qua hàng đợi và cung cấp cho bạn state cuối cùng đã cập nhật.
@@ -116,7 +116,7 @@ setNumber(n => n + 1);
116116
1. `setNumber(n => n + 1)`: `n => n + 1` là một function. React thêm nó vào hàng đợi.
117117
1. `setNumber(n => n + 1)`: `n => n + 1` là một function. React thêm nó vào hàng đợi.
118118

119-
Khi bạn gọi `useState` trong lần render tiếp theo, React duyệt qua hàng đợi. State `number` trước đó là `0`, vì vậy đó là những gì React truyền cho updater function đầu tiên làm tham số `n`. Sau đó React lấy giá trị trả về của updater function trước đó và truyền nó cho updater tiếp theo làm `n`, và cứ thế:
119+
Khi bạn gọi `useState` trong lần render tiếp theo, React duyệt qua hàng đợi. State `number` trước đó là `0`, vì vậy đó là giá trị React truyền cho updater function đầu tiên làm tham số `n`. Sau đó React lấy giá trị trả về của updater function trước đó và truyền nó cho updater tiếp theo làm `n`, và cứ thế:
120120

121121
| cập nhật trong hàng đợi | `n` | trả về |
122122
|--------------|---------|-----|
@@ -247,7 +247,7 @@ Sau đó React lưu trữ `42` là kết quả cuối cùng và trả về nó t
247247
* **Một updater function** (ví dụ `n => n + 1`) được thêm vào hàng đợi.
248248
* **Bất kỳ giá trị nào khác** (ví dụ số `5`) thêm "thay thế bằng `5`" vào hàng đợi, bỏ qua những gì đã có trong hàng đợi.
249249

250-
Sau khi event handler hoàn thành, React sẽ kích hoạt một lần render lại. Trong quá trình render lại, React sẽ xử lý hàng đợi. Các updater function chạy trong quá trình rendering, vì vậy **các updater function phải [thuần khiết](/learn/keeping-components-pure)** và chỉ *trả về* kết quả. Đừng cố gắng set state từ bên trong chúng hoặc chạy các side effect khác. Trong Strict Mode, React sẽ chạy mỗi updater function hai lần (nhưng bỏ qua kết quả lần thứ hai) để giúp bạn tìm ra lỗi.
250+
Sau khi event handler hoàn thành, React sẽ kích hoạt một lần render lại. Trong quá trình render lại, React sẽ xử lý hàng đợi. Các updater function chạy trong quá trình rendering, vì vậy **các updater function phải [thuần khiết](/learn/keeping-components-pure)** và chỉ *trả về* kết quả. Đừng cố gắng set state từ bên trong chúng hoặc chạy các side effect (hiệu ứng ngoài lề) khác. Trong Strict Mode, React sẽ chạy mỗi updater function hai lần (nhưng bỏ qua kết quả lần thứ hai) để giúp bạn tìm ra lỗi.
251251

252252
### Quy ước đặt tên {/*naming-conventions*/}
253253

@@ -263,7 +263,7 @@ Nếu bạn thích code chi tiết hơn, một quy ước phổ biến khác là
263263

264264
<Recap>
265265

266-
* Thiết lập state không thay đổi biến trong lần render hiện tại, nhưng nó yêu cầu một lần render mới.
266+
* Thiết lập state không thay đổi biến trong lần render hiện tại, nhưng nó kích hoạt một lần render mới.
267267
* React xử lý các cập nhật state sau khi các event handler đã chạy xong. Điều này được gọi là batching.
268268
* Để cập nhật một số state nhiều lần trong một sự kiện, bạn có thể sử dụng updater function `setNumber(n => n + 1)`.
269269

@@ -275,9 +275,9 @@ Nếu bạn thích code chi tiết hơn, một quy ước phổ biến khác là
275275

276276
#### Sửa bộ đếm yêu cầu {/*fix-a-request-counter*/}
277277

278-
Bạn đang làm việc trên một ứng dụng thị trường nghệ thuật cho phép người dùng gửi nhiều đơn hàng cho một tác phẩm nghệ thuật cùng một lúc. Mỗi khi người dùng nhấn nút "Buy", bộ đếm "Pending" sẽ tăng lên một. Sau ba giây, bộ đếm "Pending" sẽ giảm xuống, và bộ đếm "Completed" sẽ tăng lên.
278+
Bạn đang xây dựng một ứng dụng thị trường để buôn bán nghệ thuật cho phép người dùng gửi nhiều đơn hàng cho một tác phẩm nghệ thuật cùng một lúc. Mỗi khi người dùng nhấn nút "Buy (Mua hàng)", bộ đếm "Pending (Đang xử lí)" sẽ tăng lên một. Sau ba giây, bộ đếm "Pending" sẽ giảm xuống, và bộ đếm "Completed (Hoàn tất)" sẽ tăng lên.
279279

280-
Tuy nhiên, bộ đếm "Pending" không hoạt động như dự định. Khi bạn nhấn "Buy", nó giảm xuống `-1` (điều này không thể xảy ra!). Và nếu bạn nhấp nhanh hai lần, cả hai bộ đếm dường như hoạt động không thể đoán trước.
280+
Tuy nhiên, bộ đếm "Pending" không hoạt động như dự định. Khi bạn nhấn "Buy", nó giảm xuống `-1` (điều này không nên xảy ra!). Và nếu bạn nhấp nhanh hai lần, cả hai bộ đếm dường như hoạt động một cách khó đoán.
281281

282282
Tại sao điều này xảy ra? Hãy sửa cả hai bộ đếm.
283283

@@ -323,7 +323,7 @@ function delay(ms) {
323323

324324
<Solution>
325325

326-
Bên trong event handler `handleClick`, các giá trị của `pending``completed` tương ứng với những gì chúng có tại thời điểm sự kiện click. Đối với lần render đầu tiên, `pending``0`, vì vậy `setPending(pending - 1)` trở thành `setPending(-1)`, điều này sai. Vì bạn muốn *tăng* hoặc *giảm* các bộ đếm, thay vì set chúng thành một giá trị cụ thể được xác định trong lúc click, bạn có thể truyền các updater function thay thế:
326+
Bên trong event handler `handleClick`, các giá trị của `pending``completed` tương ứng với những gì chúng có tại thời điểm sự kiện click xảy ra. Đối với lần render đầu tiên, `pending``0`, vì vậy `setPending(pending - 1)` trở thành `setPending(-1)`, điều này sai. Vì bạn muốn *tăng* hoặc *giảm* các bộ đếm, thay vì gán chúng thành một giá trị cụ thể được xác định trong lúc click, bạn có thể truyền các updater function thay thế:
327327

328328
<Sandpack>
329329

@@ -365,23 +365,23 @@ function delay(ms) {
365365

366366
</Sandpack>
367367

368-
Điều này đảm bảo rằng khi bạn tăng hoặc giảm một bộ đếm, bạn làm điều đó liên quan đến state *mới nhất* của thay vì state tại thời điểm click.
368+
Điều này đảm bảo rằng khi bạn tăng hoặc giảm một bộ đếm, bạn thực hiện nó dựa trên state *mới nhất* của bộ đếm thay vì state tại thời điểm click.
369369

370370
</Solution>
371371

372372
#### Tự triển khai hàng đợi state {/*implement-the-state-queue-yourself*/}
373373

374-
Trong thử thách này, bạn sẽ tự triển khai một phần nhỏ của React từ đầu! Nó không khó như nghe có vẻ.
374+
Trong thử thách này, bạn sẽ tự triển khai một phần nhỏ của React từ đầu! Nó không khó như bạn nghĩ.
375375

376-
Cuộn qua bản xem trước sandbox. Lưu ý rằng nó hiển thị **bốn test case.** Chúng tương ứng với các ví dụ bạn đã thấy trước đó trên trang này. Nhiệm vụ của bạn là triển khai function `getFinalState` để nó trả về kết quả chính xác cho mỗi trường hợp đó. Nếu bạn triển khai chính xác, tất cả bốn bài test sẽ pass.
376+
Hãy xem qua sandbox ở dưới. Lưu ý rằng nó hiển thị **bốn bài test.** Chúng tương ứng với các ví dụ bạn đã thấy trước đó trên trang này. Nhiệm vụ của bạn là triển khai function `getFinalState` để nó trả về kết quả chính xác cho mỗi trường hợp đó. Nếu bạn triển khai chính xác, bạn sẽ vượt qua bốn bài test.
377377

378378
Bạn sẽ nhận được hai tham số: `baseState` là state ban đầu (như `0`), và `queue` là một mảng chứa hỗn hợp các số (như `5`) và các updater function (như `n => n + 1`) theo thứ tự chúng được thêm vào.
379379

380380
Nhiệm vụ của bạn là trả về state cuối cùng, giống như các bảng trên trang này hiển thị!
381381

382382
<Hint>
383383

384-
Nếu bạn cảm thấy bế tắc, hãy bắt đầu với cấu trúc code này:
384+
Nếu bạn không có ý tưởng, hãy bắt đầu với cấu trúc code này:
385385

386386
```js
387387
export function getFinalState(baseState, queue) {
@@ -597,7 +597,7 @@ function TestCase({
597597

598598
</Sandpack>
599599

600-
Bây giờ bạn đã biết cách phần này của React hoạt động!
600+
Bây giờ bạn đã biết cách React hoạt động như thế nào trong phần này!
601601

602602
</Solution>
603603

0 commit comments

Comments
 (0)