Skip to content

Latest commit

Β 

History

History
134 lines (93 loc) Β· 6.21 KB

File metadata and controls

134 lines (93 loc) Β· 6.21 KB

κΈ°μ—¬ν•˜κΈ°

React λ¬Έμ„œ 기여에 관심을 κ°€μ Έμ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

행동 κ°•λ Ή

페이슀뢁Facebook은 ν”„λ‘œμ νŠΈ μ°Έκ°€μžκ°€ μ€€μˆ˜ν•΄μ•Ό ν•˜λŠ” 행동 강령을 μ±„νƒν–ˆμŠ΅λ‹ˆλ‹€. 전문을 μ½μ–΄λ³΄μ„Έμš”. μ–΄λ–€ 행동이 ν—ˆμš©λ˜κ³  ν—ˆμš©λ˜μ§€ μ•ŠλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

기술 λ¬Έμ„œ μž‘μ„± 팁

기술 λ¬Έμ„œλ₯Ό μž‘μ„±ν•  λ•Œ 염두에 두어야 ν•  사항에 λŒ€ν•œ 쒋은 μš”μ•½μž…λ‹ˆλ‹€.

글에 λŒ€ν•œ κ°€μ΄λ“œλΌμΈ

μ„Ήμ…˜λ§ˆλ‹€ μ˜λ„μ μœΌλ‘œ λ‹€λ₯Έ μŠ€νƒ€μΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

이 λ¬Έμ„œλŠ” λ‹€μ–‘ν•œ ν•™μŠ΅ μŠ€νƒ€μΌκ³Ό μ‚¬μš© 사둀λ₯Ό κ³ λ €ν•˜μ—¬ λΆ„ν• λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 본문을 μˆ˜μ •ν•  λ•ŒλŠ” μ£Όλ³€ κΈ€μ˜ 톀Toneκ³Ό μŠ€νƒ€μΌStyle에 맞게 μž‘μ„±ν•˜λ„λ‘ μ£Όμ˜ν•˜μ„Έμš”. μƒˆλ‘œμš΄ 글을 μž‘μ„±ν•  λ•ŒλŠ” 같은 μ„Ήμ…˜μ— μžˆλŠ” λ‹€λ₯Έ κΈ€λ“€κ³Ό 톀을 λ§žμΆ”λ„λ‘ ν•˜μ„Έμš”. 각 μ„Ήμ…˜μ˜ μ˜λ„μ™€ λ™κΈ°λŠ” μ•„λž˜μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

React ν•™μŠ΅ν•˜κΈ° μ„Ήμ…˜μ€ 기초 κ°œλ…μ„ λ‹¨κ³„λ³„λ‘œ μ†Œκ°œν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ œκ³΅λ˜λŠ” 글듀은 이전에 μ„€λͺ…λœ 지식을 λ°”νƒ•μœΌλ‘œ ν•˜λ―€λ‘œ, κΈ€ κ°„ μ•žλ’€ κ°œλ…μ΄ μ€‘λ³΅λ˜κ±°λ‚˜ 꼬이지 μ•Šλ„λ‘ μ£Όμ˜ν•˜μ„Έμš”. λ…μžλŠ” 첫 번째 κΈ€λΆ€ν„° λ§ˆμ§€λ§‰ κΈ€κΉŒμ§€ μˆœμ„œλŒ€λ‘œ 읽으며 κ°œλ…μ„ 읡힐 수 μžˆμ–΄μ•Ό ν•˜λ©°, μΆ”κ°€ μ„€λͺ…을 μœ„ν•΄ 미리 μ•žμ„  κ°œλ…λ“€μ„ μ‚΄νŽ΄λ³΄μ§€ μ•Šλ„λ‘ ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이런 이유둜 μƒνƒœStateλŠ” 이벀트Event보닀 λ¨Όμ € μ„€λͺ…λ˜κ³ , 'React둜 μ‚¬κ³ ν•˜κΈ°' νŒŒνŠΈμ—μ„œ refλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” λ“± νŠΉμ • μˆœμ„œκ°€ μ •ν•΄μ Έ μžˆμŠ΅λ‹ˆλ‹€. λ™μ‹œμ— 'React ν•™μŠ΅ν•˜κΈ°'λŠ” React κ°œλ…μ— λŒ€ν•œ μ°Έκ³  자료 역할을 ν•˜λ―€λ‘œ, κ°œλ…λ“€μ— λŒ€ν•œ μ •μ˜μ™€ μƒν˜Έ 관계λ₯Ό μ—„κ²©ν•˜κ²Œ 닀루어야 ν•©λ‹ˆλ‹€.

API μ°Έκ³ μ„œ μ„Ήμ…˜μ€ κ°œλ…μ΄ μ•„λ‹Œ APIλ³„λ‘œ μ •λ¦¬λ˜μ–΄ 있으며, κ°€λŠ₯ν•œ ν•œ λͺ¨λ“  경우λ₯Ό ν¬ν•¨ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€. 'React ν•™μŠ΅ν•˜κΈ°'μ—μ„œ κ°„λ‹¨νžˆ λ‹€λ€˜κ±°λ‚˜ μƒλž΅ν•œ μ˜ˆμ™Έ 사항Edge Cases ν˜Ήμ€ ꢌμž₯ 사항Recommendations은 ν•΄λ‹Ή API의 레퍼런슀 λ¬Έμ„œμ— μΆ”κ°€λ‘œ μ–ΈκΈ‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

슀슀둜 μž‘μ„±ν•œ μ§€μΉ¨Instructions을 μ‹€μ²œν•΄ λ³΄μ„Έμš”.

예λ₯Ό λ“€μ–΄, 단계별 κ°€μ΄λ“œλ₯Ό μž‘μ„±ν•œλ‹€λ©΄, 직접 κ·Έ 지침을 따라가 보며 λˆ„λ½λœ λ‚΄μš©μ΄λ‚˜ μˆœμ„œκ°€ λ§žμ§€ μ•ŠλŠ” 뢀뢄을 μ°Ύμ•„λ³΄μ„Έμš”. μ‹€μ œλ‘œ 지침을 μˆœμ„œλŒ€λ‘œ μ§„ν–‰ν•˜λ‹€λ³΄λ©΄, μž‘μ„±μžκ°€ μ„€λͺ…ν•˜μ§€ μ•Šμ€ 배경지식이 μžˆκ±°λ‚˜, 단계가 λ’€μ„žμ—¬ μžˆλŠ” λ“±μ˜ 문제λ₯Ό λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°€λŠ₯ν•˜λ‹€λ©΄ λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 지침을 λ”°λΌλ³΄κ²Œ ν•˜κ³ , 그듀이 어렀움을 κ²ͺλŠ” 뢀뢄을 κ΄€μ°°ν•˜λŠ” 것도 쒋은 λ°©λ²•μž…λ‹ˆλ‹€. μ‚¬μ†Œν•΄ λ³΄μ΄μ§€λ§Œ μ˜ˆμƒμΉ˜ λͺ»ν•œ κ³³μ—μ„œ λ¬Έμ œκ°€ 생길 수 μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œ μ˜ˆμ‹œμ— λŒ€ν•œ κ°€μ΄λ“œλΌμΈ

ꡬ문Syntax

κ°€λŠ₯ν•˜λ©΄ createElement λŒ€μ‹  JSXλ₯Ό μ‚¬μš©ν•˜μ„Έμš”

단, createElement 자체λ₯Ό μ„€λͺ…ν•΄μ•Ό ν•˜λŠ” κ²½μš°λŠ” μ˜ˆμ™Έμž…λ‹ˆλ‹€.

κ°€λŠ₯ν•˜λ©΄ const, ν•„μš”ν•œ κ²½μš°μ—λŠ” let을 μ‚¬μš©ν•˜κ³ , varλŠ” μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”

ES5만 λ‹€λ£¨λŠ” 경우라면 이 κ·œμΉ™μ€ λ¬΄μ‹œν•˜μ„Έμš”.

ES5의 κΈ°λŠ₯만으둜 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±ν•  수 μžˆλŠ” 경우, ES6의 κΈ°λŠ₯을 무쑰건적으둜 μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”

ES6κ°€ 아직 λ‚―μ„  μ‚¬λžŒλ„ λ§ŽμŠ΅λ‹ˆλ‹€. 이미 μ—¬λŸ¬ κ³³μ—μ„œ const / let, 클래슀, ν™”μ‚΄ν‘œ ν•¨μˆ˜ 등을 μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ, 그에 μƒμ‘ν•˜λŠ” ES5 μ½”λ“œκ°€ κ°„λ‹¨ν•˜κ³  가독성이 μ’‹λ‹€λ©΄ ES5λ₯Ό μ‚¬μš©ν•˜λŠ” 것도 κ³ λ €ν•˜μ„Έμš”.

특히 μ΅œμƒμœ„ ν•¨μˆ˜μ—μ„œλŠ” const myFunction = () => ...κ³Ό 같은 ν™”μ‚΄ν‘œ ν•¨μˆ˜ λŒ€μ‹ μ— 이름 μžˆλŠ” function 선언을 μ„ ν˜Έν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ»΄ν¬λ„ŒνŠΈ λ‚΄ this μ»¨ν…μŠ€νŠΈλ₯Ό μœ μ§€ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ—λŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”. μƒˆλ‘œμš΄ 문법을 μ‚¬μš©ν•  λ•ŒλŠ” μž₯단점을 λͺ¨λ‘ 따져보고 κ²°μ •ν•˜μ„Έμš”.

아직 ν‘œμ€€ν™”λ˜μ§€ μ•Šμ€ κΈ°λŠ₯은 μ‚¬μš©ν•˜μ§€ λ§ˆμ„Έμš”

예λ₯Ό λ“€μ–΄, λ‹€μŒ μ½”λ“œμ²˜λŸΌ μž‘μ„±ν•˜μ§€ λ§ˆμ„Έμš”.

class MyComponent extends React.Component {
  state = {value: ''};
  handleChange = (e) => {
    this.setState({value: e.target.value});
  };
}

λŒ€μ‹ , λ‹€μŒμ²˜λŸΌ μž‘μ„±ν•˜μ„Έμš”.

class MyComponent extends React.Component {
  constructor(props) {
    super(props);
    this.handleChange = this.handleChange.bind(this);
    this.state = {value: ''};
  }
  handleChange(e) {
    this.setState({value: e.target.value});
  }
}

μ‹€ν—˜μ μΈ μ œμ•ˆExperimental Proposal에 λŒ€ν•΄ μ„€λͺ…ν•˜λŠ” 경우라면 μ˜ˆμ™Έλ‘œ ν•˜λ˜, μ½”λ“œμ™€ μ£Όλ³€ κΈ€μ—μ„œ μ‹€ν—˜μ μž„Experimental을 λͺ…μ‹œν•˜μ„Έμš”.

μŠ€νƒ€μΌ

  • μ„Έλ―Έμ½œλ‘ μ„ μ‚¬μš©ν•˜μ„Έμš”.
  • ν•¨μˆ˜ 이름과 κ΄„ν˜Έ μ‚¬μ΄μ—λŠ” 곡백을 λ„£μ§€ λ§ˆμ„Έμš”. (method () {}κ°€ μ•„λ‹Œ, method() {} ν˜•νƒœ.)
  • 고민될 λ•ŒλŠ” Prettier의 κΈ°λ³Έ μŠ€νƒ€μΌμ„ λ”°λ₯΄μ„Έμš”.
  • Hooks, Effects, Transitions 같은 React κ΄€λ ¨ κ°œλ…μ€ 항상 λŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜μ„Έμš”.

ν•˜μ΄λΌμ΄νŒ…

λ§ˆν¬λ‹€μš΄Markdown의 μ½”λ“œ λΈ”λ‘μ—μ„œλŠ” jsλ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

```js
// μ½”λ“œ
```

κ°„ν˜Ή μˆ«μžμ™€ ν•¨κ»˜ μ‚¬μš©λ˜λŠ” 블둝이 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” νŠΉμ • 쀄을 κ°•μ‘°ν•˜κΈ° μœ„ν•œ μš©λ„μž…λ‹ˆλ‹€.

ν•œ 쀄을 κ°•μ‘°ν•˜λŠ” μ˜ˆμ‹œ.

```js {2}
function hello() {
  // 이 쀄이 κ°•μ‘°λ©λ‹ˆλ‹€
}
```

일정 λ²”μœ„λ₯Ό κ°•μ‘°ν•˜λŠ” μ˜ˆμ‹œ.

```js {2-4}
function hello() {
  // μ—¬κΈ°λΆ€ν„°
  // μ‹œμž‘ν•΄μ„œ
  // μ—¬κΈ°κΉŒμ§€ κ°•μ‘°λ©λ‹ˆλ‹€
}
```

μ—¬λŸ¬ λ²”μœ„λ₯Ό κ°•μ‘°ν•˜λŠ” μ˜ˆμ‹œ.

```js {2-4,6}
function hello() {
  // μ—¬κΈ°λΆ€ν„°
  // μ‹œμž‘ν•΄μ„œ
  // μ—¬κΈ°κΉŒμ§€ κ°•μ‘°λ©λ‹ˆλ‹€
  console.log('hello');
  // 이 쀄도 κ°•μ‘°λ©λ‹ˆλ‹€
  console.log('there');
}
```

μ½”λ“œλ₯Ό μ΄λ™ν•˜κ±°λ‚˜ μˆœμ„œλ₯Ό λ°”κΏ¨λ‹€λ©΄, κ°•μ‘°ν•˜λŠ” 쀄도 같이 μˆ˜μ •ν•΄μ•Ό ν•œλ‹€λŠ” 점을 μžŠμ§€ λ§ˆμ„Έμš”.

κ°•μ‘° κΈ°λŠ₯은 λ…μžκ°€ λ†“μΉ˜κΈ° μ‰¬μš΄ ꡬ체적인 뢀뢄에 주의λ₯Ό ν™˜κΈ°ν•΄μ£Όλ―€λ‘œ 적극적으둜 μ‚¬μš©ν•˜κΈΈ ꢌμž₯ν•©λ‹ˆλ‹€.