Skip to content

Commit c015531

Browse files
merging all conflicts
2 parents c6a6a30 + f2158e3 commit c015531

File tree

11 files changed

+49
-5
lines changed

11 files changed

+49
-5
lines changed

content/community/conferences.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ Bạn có biết về hội nghị React.js ở địa phương hay khu vực c
1212

1313
## Upcoming Conferences {#upcoming-conferences}
1414

15+
### AgentConf 2022 {#agent-conf-2022}
16+
January 27th - 30th, 2022. In-person in Dornbirn and Lech Austria
17+
18+
[Website](https://agent.sh/) - [Twitter](https://twitter.com/AgentConf) - [Instagram](https://www.instagram.com/teamagent/)
19+
1520
### React Brussels 2021 {#react-brussels-2021}
1621
October 15, 2021 - remote event
1722

@@ -43,6 +48,11 @@ November 12-14, 2021 - remote event
4348

4449
[Website](https://www.reactindia.io) - [Twitter](https://twitter.com/react_india) - [Facebook](https://www.facebook.com/ReactJSIndia/) - [LinkedIn](https://www.linkedin.com/showcase/14545585) - [YouTube](https://www.youtube.com/channel/UCaFbHCBkPvVv1bWs_jwYt3w/videos)
4550

51+
### render(ATL) 2022 {#render-atlanta-2022}
52+
June 2-4, 2022. Atlanta, GA, USA
53+
54+
[Website](https://renderatl.com) - [Twitter](https://twitter.com/renderATL) - [Instagram](https://www.instagram.com/renderatl/) - [Facebook](https://www.facebook.com/renderatl/) - [LinkedIn](https://www.linkedin.com/company/renderatl)
55+
4656
## Past Conferences {#past-conferences}
4757

4858
### render(ATL) 2021 {#render-atlanta-2021}

content/community/meetups.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ Bạn đã có React.js meetup tại quốc gia của bạn chưa? Thêm nó và
112112
## Ý {#italy}
113113
* [Milan](https://www.meetup.com/React-JS-Milano/)
114114

115+
## Kenya {#kenya}
116+
* [Nairobi - Reactdevske](https://kommunity.com/reactjs-developer-community-kenya-reactdevske)
117+
115118
## Malaysia {#malaysia}
116119
* [Kuala Lumpur](https://www.kl-react.com/)
117120
* [Penang](https://www.facebook.com/groups/reactpenang/)

content/community/support.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,18 @@ Có rất nhiều diễn đàn online là nơi tuyệt vời để thảo luận
2424

2525
Mỗi cộng đồng bao gồm hàng nghìn người dùng React.
2626

27+
<<<<<<< HEAD
2728
* [Cộng đồng React của DEV](https://dev.to/t/react)
2829
* [Cộng đồng React của Hashnode](https://hashnode.com/n/reactjs)
2930
* [Trò chuyện online với Reactiflux](https://discord.gg/reactiflux)
3031
* [Cộng đồng React của Reddit](https://www.reddit.com/r/reactjs/)
3132
* [Cộng đồng React của Spectrum](https://spectrum.chat/react)
33+
=======
34+
* [DEV's React community](https://dev.to/t/react)
35+
* [Hashnode's React community](https://hashnode.com/n/reactjs)
36+
* [Reactiflux online chat](https://discord.gg/reactiflux)
37+
* [Reddit's React community](https://www.reddit.com/r/reactjs/)
38+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
3239
3340
## Tin tức {#news}
3441

content/docs/add-react-to-a-website.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,11 @@ return (
149149

150150
Hai đoạn code trên là tương đương nhau. Trong khi **JSX [hoàn toàn là tuỳ chọn](/docs/react-without-jsx.html)**, nhiều người thấy rằng nó khá hữu ích cho việc viết UI code -- cả với React và với các thư viện khác.
151151

152+
<<<<<<< HEAD
152153
Bạn có thể trải nghiệm với JSX bằng cách sử dụng [bộ chuyển đổi online](https://babeljs.io/en/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=DwIwrgLhD2B2AEcDCAbAlgYwNYF4DeAFAJTw4B88EAFmgM4B0tAphAMoQCGETBe86WJgBMAXJQBOYJvAC-RGWQBQ8FfAAyaQYuAB6cFDhkgA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=es2015%2Creact%2Cstage-2&prettier=false&targets=&version=7.4.3).
154+
=======
155+
You can play with JSX using [this online converter](https://babeljs.io/en/repl#?babili=false&browsers=&build=&builtIns=false&spec=false&loose=false&code_lz=DwIwrgLhD2B2AEcDCAbAlgYwNYF4DeAFAJTw4B88EAFmgM4B0tAphAMoQCGETBe86WJgBMAXJQBOYJvAC-RGWQBQ8FfAAyaQYuAB6cFDhkgA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=false&fileSize=false&timeTravel=false&sourceType=module&lineWrap=true&presets=es2015%2Creact%2Cstage-2&prettier=false&targets=&version=7.15.7).
156+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
153157
154158
### Thử nhanh JSX {#quickly-try-jsx}
155159

content/docs/concurrent-mode-suspense.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ function ProfileTimeline() {
100100

101101
This demo is a teaser. Don't worry if it doesn't quite make sense yet. We'll talk more about how it works below. Keep in mind that Suspense is more of a *mechanism*, and particular APIs like `fetchProfileData()` or `resource.posts.read()` in the above example are not very important. If you're curious, you can find their definitions right in the [demo sandbox](https://codesandbox.io/s/frosty-hermann-bztrp).
102102

103-
Suspense is not a data fetching library. It's a **mechanism for data fetching libraries** to communicate to React that *the data a component is reading is not ready yet*. React can then wait for it to be ready and update the UI. At Facebook, we use Relay and its [new Suspense integration](docs/getting-started/step-by-step-guide/). We expect that other libraries like Apollo can provide similar integrations.
103+
Suspense is not a data fetching library. It's a **mechanism for data fetching libraries** to communicate to React that *the data a component is reading is not ready yet*. React can then wait for it to be ready and update the UI. At Facebook, we use Relay and its [new Suspense integration](https://relay.dev/docs/getting-started/step-by-step-guide/). We expect that other libraries like Apollo can provide similar integrations.
104104

105105
In the long term, we intend Suspense to become the primary way to read asynchronous data from components -- no matter where that data is coming from.
106106

content/docs/error-boundaries.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ Then you can use it as a regular component:
6262

6363
Error boundaries work like a JavaScript `catch {}` block, but for components. Only class components can be error boundaries. In practice, most of the time you’ll want to declare an error boundary component once and use it throughout your application.
6464

65-
Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how catch {} block works in JavaScript.
65+
Note that **error boundaries only catch errors in the components below them in the tree**. An error boundary can’t catch an error within itself. If an error boundary fails trying to render the error message, the error will propagate to the closest error boundary above it. This, too, is similar to how the `catch {}` block works in JavaScript.
6666

6767
## Live Demo {#live-demo}
6868

content/docs/hooks-faq.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -912,9 +912,13 @@ Lưu ý bạn có thể chọn giữa truyền *state* của ứng dụng xuốn
912912

913913
>Lưu ý
914914
>
915+
<<<<<<< HEAD
915916
>Chúng tôi đề xuất [truyền `dispatch` xuống các context](#how-to-avoid-passing-callbacks-down) thay vì các callback độc lập qua prop. Cách tiếp cận bên dưới chỉ đề cập ở đây để đầy đủ và như là một cách hatch.
916917
>
917918
>Cũng lưu ý rằng pattern này có thể gây ra vấn đề trong [chế độ concurrent ](/blog/2018/03/27/update-on-async-rendering.html). Chúng tôi có kế hoạch cung cấp một cách làm khác hữu hiệu trong tương lai, nhưng giải pháp an toàn nhất hiện nay là luôn luôn vô hiệu hóa callback nếu một vài giá trị phụ thuộc vào thay đổi.
919+
=======
920+
>We recommend to [pass `dispatch` down in context](#how-to-avoid-passing-callbacks-down) rather than individual callbacks in props. The approach below is only mentioned here for completeness and as an escape hatch.
921+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
918922
919923
Trong vài trường hợp các biệt, bạn cần nhớ 1 callback với [`useCallback`](/docs/hooks-reference.html#usecallback) nhưng việc nhớ này không làm việc tốt bởi vì hàm bên trong bị re-create quá nhiều lần. Nếu hàm bạn nhớ là một hàm xử lý sự kiện và không được sử dụng trong quá trình render, bạn có thể sử dụng [ref như một biến instance](#is-there-something-like-instance-variables), và lưu giá trị lần commit sau cùng một cách thủ công:
920924

content/docs/thinking-in-react.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,11 @@ Sau khi kết thúc, bạn sẽ có những thư viện có thể tái sử dụ
7373

7474
Tham khảo [tài liệu React](/docs/) nếu như bạn cần trợ giúp để thực hiện bước này.
7575

76+
<<<<<<< HEAD
7677
### Bản tóm tắt ngắn gọn: Props và State {#a-brief-interlude-props-vs-state}
78+
=======
79+
Refer to the [React docs](/docs/getting-started.html) if you need help executing this step.
80+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
7781
7882
Có 2 kiểu "mô hình" dữ liệu trong React: props và state. Hiểu ra sự khác biệt giữa prop và state là điều rất quan trọng; Tham khảo [Những tài liệu từ React](/docs/state-and-lifecycle.html) nếu bạn thực sự không hiểu ra sự khác biệt đó. Xem thêm phần [FAQ: Sự khác nhau giữa prop và state là gì?](/docs/faq-state.html#what-is-the-difference-between-state-and-props)
7983

@@ -138,7 +142,11 @@ React làm cho luồng dữ liệu trở nên rõ ràng và dễ hiểu hơn ch
138142

139143
Nếu bạn thử gõ hoặc lựa chọn giá trị trong ví dụ hiện thời, bạn sẽ thấy rằng React bỏ qua những giá trị đầu vào này. Điều này sảy ra có chủ ý, vì chúng ta gán `value` prop của `input` luôn luôn bằng với `state` truyền từ `FilterableProductTable`.
140144

145+
<<<<<<< HEAD
141146
Hãy nghĩ xem chúng ta muốn thực hiện điều gì. Chúng ta muốn chắc chắn rằng khi nào người dùng thay đổi form, chúng ta cập nhật state dựa trên dữ liệu đầu vào. Vì những component chỉ nên cập nhật state cuả chúng, `FilterableProductTable` sẽ truyền vào callbacks tới `SearchBar` để kích hoạt mỗi khi dữ liệu cần cập nhật. Chúng ta có thể sử dụng sự kiện `onChange` trong input để nhận được thông báo. Callbacks truyền xuống bởi `FilterableProductTable` sẽ gọi hàm `setState()`, và ứng dụng sẽ được cập nhật.
147+
=======
148+
If you try to type or check the box in the previous version of the example (step 4), you'll see that React ignores your input. This is intentional, as we've set the `value` prop of the `input` to always be equal to the `state` passed in from `FilterableProductTable`.
149+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
142150
143151
Mặc dù nó nghe phức tạp, nhưng thật ra chỉ cần vài dòng lệnh. Và nó chỉ ra rất rõ ràng luồng dữ liệu được truyền đi trong ứng dụng như thế nào.
144152

content/tutorial/tutorial.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,7 +1045,13 @@ Hãy `map` mảng `history` trong phương thức `render` của Game component:
10451045

10461046
**[Xem code chi tiết tại bước này](https://codepen.io/gaearon/pen/EmmGEa?editors=0010)**
10471047

1048+
<<<<<<< HEAD
10481049
Với mỗi lịch sử bước đi trong game tic-tac-toe, ta tạo ra một danh sách các `<li>` chứa một `<button>`. Button sẽ có một hàm xử lý `onClick`, hàm này sẽ gọi phương thức `this.jumpTo()`. Hiện tại ta chưa có hàm `jumpTo()`. Đến bước này, bạn sẽ thấy một danh sách các bước đi được hiển thị trên màn hình và cảnh báo trong console của công cụ cho nhà phát triển với thông điệp như sau:
1050+
=======
1051+
As we iterate through `history` array, `step` variable refers to the current `history` element value, and `move` refers to the current `history` element index. We only interested in `move` here, hence `step` is not getting assigned to anything.
1052+
1053+
For each move in the tic-tac-toe game's history, we create a list item `<li>` which contains a button `<button>`. The button has a `onClick` handler which calls a method called `this.jumpTo()`. We haven't implemented the `jumpTo()` method yet. For now, we should see a list of the moves that have occurred in the game and a warning in the developer tools console that says:
1054+
>>>>>>> f2158e36715acc001c8317e20dc4f45f9e2089f3
10491055
10501056
> Warning:
10511057
> Each child in an array or iterator should have a unique "key" prop. Check the render method of "Game".
@@ -1145,6 +1151,7 @@ Tiếp theo, chúng ta sẽ định nghĩa hàm `jumpTo` trong Game component đ
11451151
// this method has not changed
11461152
}
11471153
```
1154+
Notice in `jumpTo` method, we haven't updated history property of the state. That is because state updates are merged or in more simple words react will update only the properties mentioned in `setState` method leaving the remaining state as that is. For more info **[see the documentation](https://reactjs.org/docs/state-and-lifecycle.html#state-updates-are-merged)**
11481155

11491156
Bây giờ ta sẽ cần thay đổi hàm `handleClick` của Game component một chút.
11501157

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@
6262
"yarn": "^1.3.2"
6363
},
6464
"homepage": "https://reactjs.org/",
65-
"keywords": [
66-
"gatsby"
67-
],
65+
"keywords": [],
6866
"license": "CC",
6967
"main": "n/a",
7068
"repository": {
@@ -73,6 +71,7 @@
7371
},
7472
"scripts": {
7573
"build": "gatsby clean && gatsby build",
74+
"build-ci": "gatsby clean && gatsby build",
7675
"check-all": "npm-run-all prettier generate-ids --parallel lint flow",
7776
"ci-check": "npm-run-all prettier:diff --parallel lint flow",
7877
"dev": "gatsby develop -H 0.0.0.0",

0 commit comments

Comments
 (0)