From c68595aa15fa032b23c824eb3ab25cf37798e8e1 Mon Sep 17 00:00:00 2001 From: soraly Date: Tue, 14 Sep 2021 21:51:21 +0700 Subject: [PATCH 01/32] feat/translate docs/testing.md --- content/docs/testing.md | 43 +++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/content/docs/testing.md b/content/docs/testing.md index b8e242d9f..147ff3683 100644 --- a/content/docs/testing.md +++ b/content/docs/testing.md @@ -7,34 +7,43 @@ redirect_from: next: testing-recipes.html --- -You can test React components similar to testing other JavaScript code. +Bạn có thể kiểm tra các React component tương tự như việc kiểm tra những code Javascript khác. -There are a few ways to test React components. Broadly, they divide into two categories: +Có một số cách để testing các React component. Nói chung, chúng được chia thành 2 thành phần: -* **Rendering component trees** in a simplified test environment and asserting on their output. -* **Running a complete app** in a realistic browser environment (also known as “end-to-end” tests). +* **Rendering component trees** trong một môi trường test được đơn giản hóa và khẳng định trên kết quả đầu ra của chúng. +* **Running a complete app** trong một môi trường trình duyệt thực tế (hay còn được gọi là “end-to-end” tests). -This documentation section focuses on testing strategies for the first case. While full end-to-end tests can be very useful to prevent regressions to important workflows, such tests are not concerned with React components in particular, and are out of the scope of this section. +Phần tài liệu này tập trung vào chiến lược testing cho trường hợp đầu tiên. Mặc dù các end-to-end tests đầy đủ có thể rất hữu ích để ngăn ngừa sự hồi quy +đối với những luồng làm việc quan trọng, nhưng các tests đó không liên quan đến các React component nói chung, và nằm ngoài phạm vi của phần này. -### Tradeoffs {#tradeoffs} +### Những đánh đổi {#tradeoffs} -When choosing testing tools, it is worth considering a few tradeoffs: +Khi lựa chọn những công cụ kiểm tra, cần cân nhắc một số đánh đổi sau: -* **Iteration speed vs Realistic environment:** Some tools offer a very quick feedback loop between making a change and seeing the result, but don't model the browser behavior precisely. Other tools might use a real browser environment, but reduce the iteration speed and are flakier on a continuous integration server. -* **How much to mock:** With components, the distinction between a "unit" and "integration" test can be blurry. If you're testing a form, should its test also test the buttons inside of it? Or should a button component have its own test suite? Should refactoring a button ever break the form test? +* **Tốc độ lặp lại so với với môi trường thực tế:** Một số công cụ cung cấp một vòng lặp phản hồi rất nhanh giữa việc thực hiện một thay đổi và xem xét kết quả, +nhưng không mô hình hóa chính xác hành vi của trình duyệt. Các công cụ khác có thể sử dụng một môi trường trình duyệt thực tế, nhưng lại giảm tốc độ lặp lại và dễ +bị phá vỡ hơn trên một máy chủ tích hợp liên tục. +* **Mô phỏng bao nhiêu:** Với các components, sự khác biệt giữa một "đơn vị" test và "tập hợp" test có thể bị lu mờ. Nếu bạn đang thử nghiệm trên một +form, liệu việc kiểm tra nó có nên kiểm tra luôn các button bên trong nó hay không? Hoặc một button component có nên có cho nó một bộ test riêng hay không? Liệu việc +tái cấu trúc một button có làm phá vỡ form test? -Different answers may work for different teams and products. +Những câu trả lời khác nhau có thể phù hợp cho những team và những sản phẩm khác nhau. -### Recommended Tools {#tools} +### Những công cụ được đề xuất {#tools} -**[Jest](https://facebook.github.io/jest/)** is a JavaScript test runner that lets you access the DOM via [`jsdom`](/docs/testing-environments.html#mocking-a-rendering-surface). While jsdom is only an approximation of how the browser works, it is often good enough for testing React components. Jest provides a great iteration speed combined with powerful features like mocking [modules](/docs/testing-environments.html#mocking-modules) and [timers](/docs/testing-environments.html#mocking-timers) so you can have more control over how the code executes. +**[Jest](https://facebook.github.io/jest/)** là một trình chạy thử nghiệm cho phép bạn truy cập vào DOM thông qua [`jsdom`](/docs/testing-environments.html#mocking-a-rendering-surface). Trong đó jsdom chỉ là một ước tính về cách mà trình duyệt hoạt động, nó thường đủ tốt để kiểm tra React components. Jest cung cấp +một tốc độ lặp lại tuyệt vời kết hợp với các tính năng mạnh mẽ như [modules](/docs/testing-environments.html#mocking-modules) mô phỏng (mocking) và một [timers](/docs/testing-environments.html#mocking-timers) cho phép bạn có thể kiểm soát nhiều hơn cách mà một mã code được thực thi. -**[React Testing Library](https://testing-library.com/react)** is a set of helpers that let you test React components without relying on their implementation details. This approach makes refactoring a breeze and also nudges you towards best practices for accessibility. Although it doesn't provide a way to "shallowly" render a component without its children, a test runner like Jest lets you do this by [mocking](/docs/testing-recipes.html#mocking-modules). +**[React Testing Library](https://testing-library.com/react)** là tập hợp các trình trợ giúp cho phép bạn test React components mà không cần dựa vào các chi tiết triển +khai của họ. Cách tiếp cận này giúp cho việc tái cấu trúc trở nên một cách dễ dàng và cũng thúc đẩy bạn hướng tới các phương pháp tiếp cận hay nhất về khả năng +truy cập. Mặc dù nó không cung câp một cách "shallowly" (nông cạn - đối lập với deep) đối với render một component mà không có thành phần con của nó, một test thử nghiệm +như Jest cho phép bạn làm điều này thông qua [mocking](/docs/testing-recipes.html#mocking-modules)(mô phỏng). -### Learn More {#learn-more} +### Tìm hiểu thêm {#learn-more} -This section is divided in two pages: +Phần này được chia làm hai trang: -- [Recipes](/docs/testing-recipes.html): Common patterns when writing tests for React components. -- [Environments](/docs/testing-environments.html): What to consider when setting up a testing environment for React components. +- [Recipes](/docs/testing-recipes.html): Các patterns thường gặp khi viết các tests cho React components. +- [Environments](/docs/testing-environments.html): Những điều cần cân nhắc khi thiết lập môi trường testing cho React components. From eb19b6e003beddc0d7442987b02ea341666aba7e Mon Sep 17 00:00:00 2001 From: tranminhwang Date: Tue, 14 Sep 2021 21:32:13 +0700 Subject: [PATCH 02/32] rename reactjs.org to vi.reactjs.org --- README.md | 12 ++++++------ content/blog/2021-06-08-the-plan-for-react-18.md | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 0215878dc..f2eb9f887 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# reactjs.org +# vi.reactjs.org -This repo contains the source code and documentation powering [reactjs.org](https://reactjs.org/). +This repo contains the source code and documentation powering [vi.reactjs.org](https://reactjs.org/). ## Getting started @@ -10,11 +10,11 @@ This repo contains the source code and documentation powering [reactjs.org](http 1. Node: any 12.x version starting with v12.0.0 or greater 1. Yarn: See [Yarn website for installation instructions](https://yarnpkg.com/lang/en/docs/install/) 1. A fork of the repo (for any contributions) -1. A clone of the [reactjs.org repo](https://github.com/reactjs/reactjs.org) on your local machine +1. A clone of the [vi.reactjs.org repo](https://github.com/reactjs/vi.reactjs.org) on your local machine ### Installation -1. `cd reactjs.org` to go into the project root +1. `cd vi.reactjs.org` to go into the project root 1. `yarn` to install the website's npm dependencies ### Running locally @@ -30,7 +30,7 @@ The documentation is divided into several sections with a different tone and pur ### Create a branch -1. `git checkout main` from any folder in your local `reactjs.org` repository +1. `git checkout main` from any folder in your local `vi.reactjs.org` repository 1. `git pull origin main` to ensure you have the latest main code 1. `git checkout -b the-name-of-my-branch` (replacing `the-name-of-my-branch` with a suitable name) to create a branch @@ -51,7 +51,7 @@ The documentation is divided into several sections with a different tone and pur 1. `git add -A && git commit -m "My message"` (replacing `My message` with a commit message, such as `Fix header logo on Android`) to stage and commit your changes 1. `git push my-fork-name the-name-of-my-branch` -1. Go to the [reactjs.org repo](https://github.com/reactjs/reactjs.org) and you should see recently pushed branches. +1. Go to the [vi.reactjs.org repo](https://github.com/reactjs/vi.reactjs.org) and you should see recently pushed branches. 1. Follow GitHub's instructions. 1. If possible, include screenshots of visual changes. A [Netlify](https://www.netlify.com/) build will also be automatically created once you make your PR so other people can see your change. diff --git a/content/blog/2021-06-08-the-plan-for-react-18.md b/content/blog/2021-06-08-the-plan-for-react-18.md index 00eff4743..764ff9524 100644 --- a/content/blog/2021-06-08-the-plan-for-react-18.md +++ b/content/blog/2021-06-08-the-plan-for-react-18.md @@ -11,7 +11,7 @@ The React team is excited to share a few updates: These updates are primarily aimed at maintainers of third-party libraries. If you’re learning, teaching, or using React to build user-facing applications, you can safely ignore this post. But you are welcome to follow the discussions in the React 18 Working Group if you're curious! -## What’s coming in React 18 +## What’s coming in React 18 {#whats-coming-in-react-18} When it’s released, React 18 will include out-of-the-box improvements (like [automatic batching](https://github.com/reactwg/react-18/discussions/21)), new APIs (like [`startTransition`](https://github.com/reactwg/react-18/discussions/41)), and a [new streaming server renderer](https://github.com/reactwg/react-18/discussions/37) with built-in support for `React.lazy`. @@ -19,13 +19,13 @@ These features are possible thanks to a new opt-in mechanism we’re adding in R If you've been following our research into the future of React (we don't expect you to!), you might have heard of something called “concurrent mode” or that it might break your app. In response to this feedback from the community, we’ve redesigned the upgrade strategy for gradual adoption. Instead of an all-or-nothing “mode”, concurrent rendering will only be enabled for updates triggered by one of the new features. In practice, this means **you will be able to adopt React 18 without rewrites and try the new features at your own pace.** -## A gradual adoption strategy +## A gradual adoption strategy {#a-gradual-adoption-strategy} Since concurrency in React 18 is opt-in, there are no significant out-of-the-box breaking changes to component behavior. **You can upgrade to React 18 with minimal or no changes to your application code, with a level of effort comparable to a typical major React release**. Based on our experience converting several apps to React 18, we expect that many users will be able to upgrade within a single afternoon. We successfully shipped concurrent features to tens of thousands of components at Facebook, and in our experience, we've found that most React components “just work” without additional changes. We're committed to making sure this is a smooth upgrade for the entire community, so today we're announcing the React 18 Working Group. -## Working with the community +## Working with the community {#working-with-the-community} We’re trying something new for this release: We've invited a panel of experts, developers, library authors, and educators from across the React community to participate in our [React 18 Working Group](https://github.com/reactwg/react-18) to provide feedback, ask questions, and collaborate on the release. We couldn't invite everyone we wanted to this initial, small group, but if this experiment works out, we hope there will be more in the future! @@ -33,7 +33,7 @@ We’re trying something new for this release: We've invited a panel of experts, For more information on upgrading to React 18, or additional resources about the release, see the [React 18 announcement post](https://github.com/reactwg/react-18/discussions/4). -## Accessing the React 18 Working Group +## Accessing the React 18 Working Group {#accessing-the-react-18-working-group} Everyone can read the discussions in the [React 18 Working Group repo](https://github.com/reactwg/react-18). @@ -41,13 +41,13 @@ Because we expect an initial surge of interest in the Working Group, only invite As always, you can submit bug reports, questions, and general feedback to our [issue tracker](https://github.com/facebook/react/issues). -## How to try React 18 Alpha today +## How to try React 18 Alpha today {#how-to-try-react-18-alpha-today} New alphas are [regularly published to npm using the `@alpha` tag](https://github.com/reactwg/react-18/discussions/9). These releases are built using the most recent commit to our main repo. When a feature or bugfix is merged, it will appear in an alpha the following weekday. There may be significant behavioral or API changes between alpha releases. Please remember that **alpha releases are not recommended for user-facing, production applications**. -## Projected React 18 release timeline +## Projected React 18 release timeline {#projected-react-18-release-timeline} We don't have a specific release date scheduled, but we expect it will take several months of feedback and iteration before React 18 is ready for most production applications. From b495de9e4a3fcd7d7651cd78ad2aabda284c111d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=C3=AAn=20Ary?= Date: Tue, 14 Sep 2021 22:36:48 +0700 Subject: [PATCH 03/32] Translate CDN Links page and Create a New React App page --- .gitignore | 1 + content/docs/cdn-links.md | 14 ++-- content/docs/create-a-new-react-app.md | 84 ++++++++++----------- content/docs/nav.yml | 4 +- src/components/FeedbackForm/FeedbackForm.js | 2 +- 5 files changed, 53 insertions(+), 52 deletions(-) diff --git a/.gitignore b/.gitignore index d1bde99ce..19f7230bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .cache .DS_STORE .idea +.history node_modules public yarn-error.log \ No newline at end of file diff --git a/content/docs/cdn-links.md b/content/docs/cdn-links.md index e357811de..61716456e 100644 --- a/content/docs/cdn-links.md +++ b/content/docs/cdn-links.md @@ -6,32 +6,32 @@ prev: create-a-new-react-app.html next: release-channels.html --- -Both React and ReactDOM are available over a CDN. +Cả React và ReactDOM đều có sẵn trên CDN. ```html ``` -The versions above are only meant for development, and are not suitable for production. Minified and optimized production versions of React are available at: +Các phiên bản trên chỉ dành cho develop và không phù hợp cho production. Các phiên bản production thu nhỏ và tối ưu hóa của React có sẵn tại: ```html ``` -To load a specific version of `react` and `react-dom`, replace `17` with the version number. +Để tải một phiên bản cụ thể của `react` và `react-dom`, thay thế `17` với số phiên bản. -### Why the `crossorigin` Attribute? {#why-the-crossorigin-attribute} +### Tại sao lại có Thuộc Tính `crossorigin`? {#why-the-crossorigin-attribute} -If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute set: +Nếu bạn phân phối React từ CDN, chúng tôi khuyên bạn nên giữ bộ thuộc tính [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes): ```html ``` -We also recommend to verify that the CDN you are using sets the `Access-Control-Allow-Origin: *` HTTP header: +Chúng tôi cũng khuyên bạn nên xác minh rằng CDN bạn đang sử dụng đặt `Access-Control-Allow-Origin: *` HTTP header: ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png) -This enables a better [error handling experience](/blog/2017/07/26/error-handling-in-react-16.html) in React 16 and later. +Điều này cho phép trải nghiệm [xử lý lỗi tốt hơn](/blog/2017/07/26/error-handling-in-react-16.html) trong React 16 trở lên. diff --git a/content/docs/create-a-new-react-app.md b/content/docs/create-a-new-react-app.md index 12afba206..6a1486d64 100644 --- a/content/docs/create-a-new-react-app.md +++ b/content/docs/create-a-new-react-app.md @@ -1,6 +1,6 @@ --- id: create-a-new-react-app -title: Create a New React App +title: Tạo một App React mới permalink: docs/create-a-new-react-app.html redirect_from: - "docs/add-react-to-a-new-app.html" @@ -8,38 +8,38 @@ prev: add-react-to-a-website.html next: cdn-links.html --- -Use an integrated toolchain for the best user and developer experience. +Sử dụng chuỗi công cụ tích hợp để có trải nghiệm tốt nhất cho người dùng và nhà phát triển. -This page describes a few popular React toolchains which help with tasks like: +Trang này mô tả một số công cụ React phổ biến giúp thực hiện các tác vụ như: -* Scaling to many files and components. -* Using third-party libraries from npm. -* Detecting common mistakes early. -* Live-editing CSS and JS in development. -* Optimizing the output for production. +* Mở rộng quy mô cho nhiều file và component. +* Sử dụng thư viện của bên thứ ba từ npm. +* Phát hiện sớm các lỗi thường gặp. +* Chỉnh sửa trực tiếp CSS và JS đang được phát triển. +* Tối ưu hóa đầu ra cho production. -The toolchains recommended on this page **don't require configuration to get started**. +Các công cụ được đề xuất trên trang này **không yêu cầu cấu hình để bắt đầu**. -## You Might Not Need a Toolchain {#you-might-not-need-a-toolchain} +## Bạn Có Thể Không Cần một Chuỗi Công Cụ {#you-might-not-need-a-toolchain} -If you don't experience the problems described above or don't feel comfortable using JavaScript tools yet, consider [adding React as a plain ` ``` -Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP header: +Đồng thời chắc chắn rằng CDN phản hồi với một HTTP header `Access-Control-Allow-Origin: *`: ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png) @@ -30,12 +30,12 @@ Also ensure the CDN responds with the `Access-Control-Allow-Origin: *` HTTP head #### Source maps {#source-maps} -Some JavaScript bundlers may wrap the application code with `eval` statements in development. (For example Webpack will do this if [`devtool`](https://webpack.js.org/configuration/devtool/) is set to any value containing the word "eval".) This may cause errors to be treated as cross-origin. +Một số công cụ đóng gói Javascript có thể bọc mã ứng dụng bằng các câu lệnh `eval` trong quá trình phát triển. (Ví dụ: Webpack sẽ thực hiện việc này nếu [`devtool`](https://webpack.js.org/configuration/devtool/) được thiết lập từ bất kỳ giá trị nào có chưa từ khóa "eval".) Điều này có thể khiến các lỗi được coi là có nguồn gốc chéo nhau. -If you use Webpack, we recommend using the `cheap-module-source-map` setting in development to avoid this problem. +Nếu bạn sử dụng Webpack, chúng tôi khuyên bạn nên sử dụng cài đặt `cheap-module-source-map` trong quá trình phát triển để tránh vấn đề này. -#### Code splitting {#code-splitting} +#### Tách code {#code-splitting} -If your application is split into multiple bundles, these bundles may be loaded using JSONP. This may cause errors thrown in the code of these bundles to be treated as cross-origin. +Nếu ứng dụng của bạn được chia thành nhiều gói, các gói này có thể được tải bằng JSONP. Điều này có thể gây ra lỗi được đưa ra trong code của các gói này sẽ được coi là có nguồn gốc chéo nhau. -To resolve this, use the [`crossOriginLoading`](https://webpack.js.org/configuration/output/#output-crossoriginloading) setting in development to add the `crossorigin` attribute to the ` ``` -Các phiên bản trên chỉ dành cho develop và không phù hợp cho production. Các phiên bản production thu nhỏ và tối ưu hóa của React có sẵn tại: +The versions above are only meant for development, and are not suitable for production. Minified and optimized production versions of React are available at: ```html ``` -Để tải một phiên bản cụ thể của `react` và `react-dom`, thay thế `17` với số phiên bản. +To load a specific version of `react` and `react-dom`, replace `17` with the version number. -### Tại sao lại có Thuộc Tính `crossorigin`? {#why-the-crossorigin-attribute} +### Why the `crossorigin` Attribute? {#why-the-crossorigin-attribute} -Nếu bạn phân phối React từ CDN, chúng tôi khuyên bạn nên giữ bộ thuộc tính [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes): +If you serve React from a CDN, we recommend to keep the [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute set: ```html ``` -Chúng tôi cũng khuyên bạn nên xác minh rằng CDN bạn đang sử dụng đặt `Access-Control-Allow-Origin: *` HTTP header: +We also recommend to verify that the CDN you are using sets the `Access-Control-Allow-Origin: *` HTTP header: ![Access-Control-Allow-Origin: *](../images/docs/cdn-cors-header.png) -Điều này cho phép trải nghiệm [xử lý lỗi tốt hơn](/blog/2017/07/26/error-handling-in-react-16.html) trong React 16 trở lên. +This enables a better [error handling experience](/blog/2017/07/26/error-handling-in-react-16.html) in React 16 and later. From 3433db9a34fc01b9927b6c899d919678ad2f224c Mon Sep 17 00:00:00 2001 From: cothvbdnnn Date: Wed, 15 Sep 2021 11:43:30 +0700 Subject: [PATCH 22/32] Translate react-v0-4-1 --- content/blog/2013-07-26-react-v0-4-1.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/blog/2013-07-26-react-v0-4-1.md b/content/blog/2013-07-26-react-v0-4-1.md index 181bb09be..0287ac12a 100644 --- a/content/blog/2013-07-26-react-v0-4-1.md +++ b/content/blog/2013-07-26-react-v0-4-1.md @@ -3,22 +3,22 @@ title: "React v0.4.1" author: [zpao] --- -React v0.4.1 is a small update, mostly containing correctness fixes. Some code has been restructured internally but those changes do not impact any of our public APIs. +React v0.4.1 là một thay đổi nhỏ, hầu hết bao gồm các bản sửa lỗi về tính đúng đắn. Một số đoạn mã đã được cấu trúc lại bên trong nhưng những thay đổi đó không ảnh hưởng đến bất kỳ API công khai nào của chúng tôi. ## React {#react} -* `setState` callbacks are now executed in the scope of your component. -* `click` events now work on Mobile Safari. -* Prevent a potential error in event handling if `Object.prototype` is extended. -* Don't set DOM attributes to the string `"undefined"` on update when previously defined. -* Improved support for `