Skip to content

Commit 58f40ef

Browse files
authored
Merge branch 'master' into design_principle
2 parents 00b431c + bc3b4ac commit 58f40ef

8 files changed

+66
-57
lines changed

content/community/conferences.md

+30-30
Original file line numberDiff line numberDiff line change
@@ -12,36 +12,6 @@ Do you know of a local React.js conference? Add it here! (Please keep the list c
1212

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

15-
### ReactEurope 2019 {#reacteurope-2019}
16-
May 23-24, 2019 in Paris, France
17-
18-
[Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope) - [Videos](https://www.youtube.com/c/ReacteuropeOrgConf)
19-
20-
### React Conf Armenia 2019 {#react-conf-am-19}
21-
May 25, 2019 in Yerevan, Armenia
22-
23-
[Website](https://reactconf.am/) - [Twitter](https://twitter.com/ReactConfAM) - [Facebook](https://www.facebook.com/reactconf.am/) - [YouTube](https://www.youtube.com/c/JavaScriptConferenceArmenia) - [CFP](http://bit.ly/speakReact)
24-
25-
### ReactNext 2019 {#react-next-2019}
26-
June 11, 2019. Tel Aviv, Israel
27-
28-
[Website](https://react-next.com) - [Twitter](https://twitter.com/ReactNext) - [Videos](https://www.youtube.com/channel/UC3BT8hh3yTTYxbLQy_wbk2w)
29-
30-
### React Norway 2019 {#react-norway-2019}
31-
June 12, 2019. Larvik, Norway
32-
33-
[Website](https://reactnorway.com) - [Twitter](https://twitter.com/ReactNorway)
34-
35-
### React Loop 2019 {#react-loop-2019}
36-
June 21, 2019 Chicago, Illinois USA
37-
38-
[Website](https://reactloop.com) - [Twitter](https://twitter.com/ReactLoop)
39-
40-
### Chain React 2019 {#chain-react-2019}
41-
July 11-12, 2019. Portland, OR, USA.
42-
43-
[Website](https://infinite.red/ChainReactConf)
44-
4515
### React Rally 2019 {#react-rally-2019}
4616
August 22-23, 2019. Salt Lake City, USA.
4717

@@ -395,3 +365,33 @@ May 3, 2019 in London, UK
395365
May 11 in Sofia, Bulgaria
396366

397367
[Website](http://react-not-a-conf.com/) - [Twitter](https://twitter.com/reactnotaconf) - [Facebook](https://www.facebook.com/events/780891358936156)
368+
369+
### ReactEurope 2019 {#reacteurope-2019}
370+
May 23-24, 2019 in Paris, France
371+
372+
[Website](https://www.react-europe.org) - [Twitter](https://twitter.com/ReactEurope) - [Facebook](https://www.facebook.com/ReactEurope) - [Videos](https://www.youtube.com/c/ReacteuropeOrgConf)
373+
374+
### React Conf Armenia 2019 {#react-conf-am-19}
375+
May 25, 2019 in Yerevan, Armenia
376+
377+
[Website](https://reactconf.am/) - [Twitter](https://twitter.com/ReactConfAM) - [Facebook](https://www.facebook.com/reactconf.am/) - [YouTube](https://www.youtube.com/c/JavaScriptConferenceArmenia) - [CFP](http://bit.ly/speakReact)
378+
379+
### ReactNext 2019 {#react-next-2019}
380+
June 11, 2019. Tel Aviv, Israel
381+
382+
[Website](https://react-next.com) - [Twitter](https://twitter.com/ReactNext) - [Videos](https://www.youtube.com/channel/UC3BT8hh3yTTYxbLQy_wbk2w)
383+
384+
### React Norway 2019 {#react-norway-2019}
385+
June 12, 2019. Larvik, Norway
386+
387+
[Website](https://reactnorway.com) - [Twitter](https://twitter.com/ReactNorway)
388+
389+
### React Loop 2019 {#react-loop-2019}
390+
June 21, 2019 Chicago, Illinois USA
391+
392+
[Website](https://reactloop.com) - [Twitter](https://twitter.com/ReactLoop)
393+
394+
### Chain React 2019 {#chain-react-2019}
395+
July 11-12, 2019. Portland, OR, USA.
396+
397+
[Website](https://infinite.red/ChainReactConf)

content/community/meetups.md

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Do you have a local React.js meetup? Add it here! (Please keep the list alphabet
5555
* [Düsseldorf](https://www.meetup.com/de-DE/ReactJS-Meetup-Dusseldorf/)
5656
* [Hamburg](https://www.meetup.com/Hamburg-React-js-Meetup/)
5757
* [Karlsruhe](https://www.meetup.com/react_ka/)
58+
* [Kiel](https://www.meetup.com/Kiel-React-Native-Meetup/)
5859
* [Munich](https://www.meetup.com/ReactJS-Meetup-Munich/)
5960
* [React Berlin](https://www.meetup.com/React-Berlin/)
6061
* [React.JS Girls Berlin](https://www.meetup.com/ReactJS-Girls-Berlin/)

content/community/tools-ui-components.md

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ permalink: community/ui-components.html
7272
## Fee Based Components {#fee-based-components}
7373

7474
* **[ag-Grid](https://www.ag-grid.com)** Advanced data grid / data table for React.
75+
* **[DevExtreme Reactive](https://devexpress.github.io/devextreme-reactive/react/)** High-performance plugin-based Data Grid, Scheduler and Chart components for Bootstrap and Material Design.
7576
* **[ExtReact components](https://www.sencha.com/products/extreact//)**: 115+ Ready-to-Use UI Components.
7677
* **[Grapecity Wijmo UI Components for React](https://www.grapecity.com/en/react/)**: Expand your React UI options with Wijmo’s complete collection of JavaScript components.
7778
* **[jQWidgets React components](https://www.jqwidgets.com/react/)**: Enterprise Ready 70+ UI Components.

content/docs/accessibility.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ Deque Systems에서는 자동으로 애플리케이션의 종단 간(end-to-end)
460460
일부 브라우저에서는 접근성 트리 안의 각 엘리먼트의 접근성 정보를 손쉽게 확인할 수 있습니다.
461461

462462
- [Firefox에서 접근성 검사기를 사용하는 방법](https://developer.mozilla.org/en-US/docs/Tools/Accessibility_inspector)
463-
- [Chrome에서 접근성 검사기를 활성화하는 방법](https://gist.github.com/marcysutton/0a42f815878c159517a55e6652e3b23a)
463+
- [Chrome에서 접근성 검사기를 사용하는 방법](https://developers.google.com/web/tools/chrome-devtools/accessibility/reference#pane)
464464
- [OS X Safari에서 접근성 검사기를 사용하는 방법](https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/OSXAXTestingApps.html)
465465

466466
### 스크린 리더 {#screen-readers}

content/docs/hooks-faq.md

+6-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Starting with 16.8.0, React includes a stable implementation of React Hooks for:
7070

7171
Note that **to enable Hooks, all React packages need to be 16.8.0 or higher**. Hooks won't work if you forget to update, for example, React DOM.
7272

73-
React Native will fully support Hooks in its next stable release.
73+
React Native 0.59 and above support Hooks.
7474

7575
### Do I need to rewrite all my class components? {#do-i-need-to-rewrite-all-my-class-components}
7676

@@ -675,7 +675,9 @@ function Counter() {
675675
}
676676
```
677677

678-
Specifying `[count]` as a list of dependencies would fix the bug, but would cause the interval to be reset on every change. That may not be desirable. To fix this, we can use the [functional update form of `setState`](/docs/hooks-reference.html#functional-updates). It lets us specify *how* the state needs to change without referencing the *current* state:
678+
The empty set of dependencies, `[]`, means that the effect will only run once when the component mounts, and not on every re-render. The problem is that inside the `setInterval` callback, the value of `count` does not change, because we've created a closure with the value of `count` set to `0` as it was when the effect callback ran. Every second, this callback then calls `setCount(0 + 1)`, so the count never goes above 1.
679+
680+
Specifying `[count]` as a list of dependencies would fix the bug, but would cause the interval to be reset on every change. Effectively, each `setInterval` would get one chance to execute before being cleared (similar to a `setTimout`.) That may not be desirable. To fix this, we can use the [functional update form of `setState`](/docs/hooks-reference.html#functional-updates). It lets us specify *how* the state needs to change without referencing the *current* state:
679681

680682
```js{6,9}
681683
function Counter() {
@@ -694,6 +696,8 @@ function Counter() {
694696

695697
(The identity of the `setCount` function is guaranteed to be stable so it's safe to omit.)
696698

699+
Now, the `setInterval` callback executes once a second, but each time the inner call to `setCount` can use an up-to-date value for `count` (called `c` in the callback here.)
700+
697701
In more complex cases (such as if one state depends on another state), try moving the state update logic outside the effect with the [`useReducer` Hook](/docs/hooks-reference.html#usereducer). [This article](https://adamrackis.dev/state-and-use-reducer/) offers an example of how you can do this. **The identity of the `dispatch` function from `useReducer` is always stable** — even if the reducer function is declared inside the component and reads its props.
698702

699703
As a last resort, if you want something like `this` in a class, you can [use a ref](/docs/hooks-faq.html#is-there-something-like-instance-variables) to hold a mutable variable. Then you can write and read to it. For example:

content/docs/state-and-lifecycle.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ class Clock extends React.Component {
245245
}
246246
```
247247

248-
`this`에서 어떻게 타이머 ID를 제대로 저장하는지 주의해주세요.
248+
`this` (`this.timerID`)에서 어떻게 타이머 ID를 제대로 저장하는지 주의해주세요.
249249

250250
`this.props`가 React에 의해 스스로 설정되고 `this.state`가 특수한 의미가 있지만, 타이머 ID와 같이 데이터 흐름 안에 포함되지 않는 어떤 항목을 보관할 필요가 있다면 자유롭게 클래스에 수동으로 부가적인 필드를 추가해도 됩니다.
251251

content/docs/typechecking-with-proptypes.md

+24-21
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ redirect_from:
1010
>
1111
> `React.PropTypes`는 React v15.5부터 다른 패키지로 이동하였습니다. 대신 [`prop-types` 라이브러리를](https://www.npmjs.com/package/prop-types) 사용하시길 바랍니다.
1212
>
13-
> 우리는 변환을 자동화하기 위하여 [codemod 스크립트를](/blog/2017/04/07/react-v15.5.0.html#migrating-from-reactproptypes) 제공하고 있습니다.
13+
> 우리는 변환을 자동화하기 위하여 [codemod 스크립트를](/blog/2017/04/07/react-v15.5.0.html#migrating-from-reactproptypes) 제공하고 있습니다.
1414
1515
당신의 앱이 커짐에 따라 타입 확인을 통하면 많은 버그를(bug) 잡을 수 있습니다. 특정 애플리케이션에서는 전체 애플리케이션의 타입 확인을 위하여 [Flow](https://flow.org/) 또는 [TypeScript](https://www.typescriptlang.org/)와 같은 JavaScript 도구(Extensions)를 사용할 수 있습니다. 당신이 이러한 것들을 사용하지 않더라도 React는 내장된 타입 확인 기능들을 가지고 있습니다. 컴포넌트의 props에 타입 확인을 하려면 다음과 같이 특별한 프로퍼티인 propTypes를 선언할 수 있습니다.
1616

@@ -30,7 +30,7 @@ Greeting.propTypes = {
3030
};
3131
```
3232

33-
`PropTypes`는 전달받은 데이터의 유효성을 검증하기 위해서 다양한 유효성 검사기(Validator)를 내보냅니다. 아래 예시에서는 `PropTypes.string`을 사용하게 될 것입니다. prop에 유효하지 않은 값이 전달 되었을 때, 경고문이 JavaScript 콘솔을 통해 보일 것입니다. `propTypes`는 성능상의 이유로 개발 모드(Development mode) 에서만 확인될 것입니다.
33+
`PropTypes`는 전달받은 데이터의 유효성을 검증하기 위해서 다양한 유효성 검사기(Validator)를 내보냅니다. 아래 예시에서는 `PropTypes.string`을 사용하게 될 것입니다. prop에 유효하지 않은 값이 전달 되었을 때, 경고문이 JavaScript 콘솔을 통해 보일 것입니다. `propTypes`는 성능상의 이유로 개발 모드(Development mode) 에서만 확인될 것입니다.
3434

3535
### PropTypes {#proptypes}
3636

@@ -40,8 +40,8 @@ Greeting.propTypes = {
4040
import PropTypes from 'prop-types';
4141

4242
MyComponent.propTypes = {
43-
// prop가 특정 JS 형식임을 선언할 수 있습니다.
44-
// 이것들은 기본적으로 모두 선택 사항입니다.
43+
// prop가 특정 JS 형식임을 선언할 수 있습니다.
44+
// 이것들은 기본적으로 모두 선택 사항입니다.
4545
optionalArray: PropTypes.array,
4646
optionalBool: PropTypes.bool,
4747
optionalFunc: PropTypes.func,
@@ -57,11 +57,14 @@ MyComponent.propTypes = {
5757
// React 엘리먼트.
5858
optionalElement: PropTypes.element,
5959

60-
// prop가 클래스의 인스턴스임을 선언할 수 있습니다.
61-
// 이 경우 JS's instanceof 연산자를 사용합니다.
60+
// React 엘리먼트 타입 (ie. MyComponent)
61+
optionalElementType: PropTypes.elementType,
62+
63+
// prop가 클래스의 인스턴스임을 선언할 수 있습니다.
64+
// 이 경우 JS's instanceof 연산자를 사용합니다.
6265
optionalMessage: PropTypes.instanceOf(Message),
6366

64-
// 열거형(enum)으로 처리하여 prop가 특정 값들로 제한되도록 할 수 있습니다.
67+
// 열거형(enum)으로 처리하여 prop가 특정 값들로 제한되도록 할 수 있습니다.
6568
optionalEnum: PropTypes.oneOf(['News', 'Photos']),
6669

6770
// 여러 종류중 하나의 종류가 될 수 있는 객체
@@ -82,22 +85,22 @@ MyComponent.propTypes = {
8285
color: PropTypes.string,
8386
fontSize: PropTypes.number
8487
}),
85-
88+
8689
// An object with warnings on extra properties
8790
optionalObjectWithStrictShape: PropTypes.exact({
8891
name: PropTypes.string,
8992
quantity: PropTypes.number
90-
}),
93+
}),
9194

9295
// 위에 있는 것 모두 `isRequired`와 연결하여 prop가 제공되지 않았을 때
93-
// 경고가 보이도록 할 수 있습니다.
96+
// 경고가 보이도록 할 수 있습니다.
9497
requiredFunc: PropTypes.func.isRequired,
9598

9699
// 모든 데이터 타입이 가능한 값
97100
requiredAny: PropTypes.any.isRequired,
98101

99-
// 사용자 정의 유효성 검사기를 지정할 수도 있습니다.
100-
// 검사 실패 시에는 에러(Error) 객체를 반환해야 합니다.
102+
// 사용자 정의 유효성 검사기를 지정할 수도 있습니다.
103+
// 검사 실패 시에는 에러(Error) 객체를 반환해야 합니다.
101104
// `oneOfType`안에서는 작동하지 않으므로 `console.warn` 혹은 throw 하지 마세요.
102105
customProp: function(props, propName, componentName) {
103106
if (!/matchme/.test(props[propName])) {
@@ -108,10 +111,10 @@ MyComponent.propTypes = {
108111
}
109112
},
110113

111-
// `arrayOf` 와 `objectOf 에 사용자 정의 유효성 검사기를 적용할 수 있습니다.
114+
// `arrayOf` 와 `objectOf 에 사용자 정의 유효성 검사기를 적용할 수 있습니다.
112115
// 검사 실패 시에는 에러(Error) 객체를 반환해야 합니다.
113-
// 유효성 검사기는 배열(array) 혹은 객체의 각 키(key)에 대하여 호출될 것입니다.
114-
// 유효성 검사기의 첫 두 개의 변수는 배열 혹은 객체 자신과 현재 아이템의 키입니다.
116+
// 유효성 검사기는 배열(array) 혹은 객체의 각 키(key)에 대하여 호출될 것입니다.
117+
// 유효성 검사기의 첫 두 개의 변수는 배열 혹은 객체 자신과 현재 아이템의 키입니다.
115118

116119
customArrayProp: PropTypes.arrayOf(function(propValue, key, componentName, location, propFullName) {
117120
if (!/matchme/.test(propValue[key])) {
@@ -126,14 +129,14 @@ MyComponent.propTypes = {
126129

127130
### 하나의 자식만 요구하기 {#requiring-single-child}
128131

129-
`PropTypes.element`를 이용하여 컴포넌트의 자식들(Children)에 단 하나의 자식(Child)만이 전달될 수 있도록 명시할 수 있습니다.
132+
`PropTypes.element`를 이용하여 컴포넌트의 자식들(Children)에 단 하나의 자식(Child)만이 전달될 수 있도록 명시할 수 있습니다.
130133

131134
```javascript
132135
import PropTypes from 'prop-types';
133136

134137
class MyComponent extends React.Component {
135138
render() {
136-
// 이것은 반드시 하나의 엘리먼트여야 합니다. 아니라면, 경고(warn)가 일어날 것입니다.
139+
// 이것은 반드시 하나의 엘리먼트여야 합니다. 아니라면, 경고(warn)가 일어날 것입니다.
137140
const children = this.props.children;
138141
return (
139142
<div>
@@ -150,7 +153,7 @@ MyComponent.propTypes = {
150153

151154
### 초기 Prop 값 {#default-prop-values}
152155

153-
`defaultProps` 프로퍼티를 할당함으로써 `props`의 초깃값을 정의할 수 있습니다:
156+
`defaultProps` 프로퍼티를 할당함으로써 `props`의 초깃값을 정의할 수 있습니다:
154157

155158
```javascript
156159
class Greeting extends React.Component {
@@ -161,7 +164,7 @@ class Greeting extends React.Component {
161164
}
162165
}
163166

164-
// props의 초깃값을 정의합니다.
167+
// props의 초깃값을 정의합니다.
165168
Greeting.defaultProps = {
166169
name: 'Stranger'
167170
};
@@ -173,7 +176,7 @@ ReactDOM.render(
173176
);
174177
```
175178

176-
만약 당신이 [transform-class-properties](https://babeljs.io/docs/plugins/transform-class-properties/)와 같은 Babel 변환(transform)을 사용하고 있다면, `defaultProps`를 React 컴포넌트 클래스 내의 정적 프로퍼티로 선언 할 수도 있습니다. 이 문법은 아직 완성되지 않았으므로 브라우저에서 작동하기 위해서는 컴파일링 작업이 필요합니다. 더 자세한 정보를 위해서 [class fields proposal](https://github.com/tc39/proposal-class-fields)를 확인해 주시길 바랍니다.
179+
만약 당신이 [transform-class-properties](https://babeljs.io/docs/plugins/transform-class-properties/)와 같은 Babel 변환(transform)을 사용하고 있다면, `defaultProps`를 React 컴포넌트 클래스 내의 정적 프로퍼티로 선언 할 수도 있습니다. 이 문법은 아직 완성되지 않았으므로 브라우저에서 작동하기 위해서는 컴파일링 작업이 필요합니다. 더 자세한 정보를 위해서 [class fields proposal](https://github.com/tc39/proposal-class-fields)를 확인해 주시길 바랍니다.
177180

178181
```javascript
179182
class Greeting extends React.Component {
@@ -189,4 +192,4 @@ class Greeting extends React.Component {
189192
}
190193
```
191194

192-
`defaultProps``this.props.name`의 값이 부모 컴포넌트에 의해 명시되지 않았을 때 값을 갖도록 할 것입니다. `propTypes`의 타입 확인은 `defaultProps`에도 적용되게 하기 위하여 `defaultProps`가 처리된 뒤에 일어날 것입니다.
195+
`defaultProps``this.props.name`의 값이 부모 컴포넌트에 의해 명시되지 않았을 때 값을 갖도록 할 것입니다. `propTypes`의 타입 확인은 `defaultProps`에도 적용되게 하기 위하여 `defaultProps`가 처리된 뒤에 일어날 것입니다.

content/tutorial/tutorial.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ class Board extends React.Component {
376376
}
377377
```
378378

379-
나중에 board를 채우면 `this.state.squares` 배열은 아래와 같은 보일 것입니다.
379+
나중에 board를 채우면 `this.state.squares` 배열은 아래와 같이 보일 것입니다.
380380

381381
```javascript
382382
[
@@ -519,7 +519,7 @@ class Board extends React.Component {
519519

520520
이제 이전과 마찬가지로 Square를 클릭하여 사각형을 채울 수 있습니다. 그러나 이제는 state가 각 Square 컴포넌트 대신에 Board 컴포넌트에 저장됩니다. Board의 상태가 변화할 때 Square 컴포넌트는 자동으로 다시 렌더링합니다. Board 컴포넌트의 모든 사각형의 상태를 유지하는 것으로 이후에 승자를 결정하는 것이 가능합니다.
521521

522-
Square 컴포넌트가 더 이상 state를 유지하지 않기 때문에 Square 컴포넌트는 Board 컴포넌트에서 값을 받아 클릭됳 때 Board 컴포넌트로 정보를 전달합니다. React 용어로 Square 컴포넌트는 이제 **제어되는 컴포넌트**입니다. Board는 이들을 완전히 제어합니다.
522+
Square 컴포넌트가 더 이상 state를 유지하지 않기 때문에 Square 컴포넌트는 Board 컴포넌트에서 값을 받아 클릭될 때 Board 컴포넌트로 정보를 전달합니다. React 용어로 Square 컴포넌트는 이제 **제어되는 컴포넌트**입니다. Board는 이들을 완전히 제어합니다.
523523

524524
`handleClick`에서는 `.slice()`를 호출하는 것으로 기존 배열을 수정하지 않고 `squares` 배열의 복사본을 생성하여 수정하는 것에 주의해주세요. 왜 `squares` 배열의 사본을 생성하였는지 다음 단락에서 설명하겠습니다.
525525

0 commit comments

Comments
 (0)