React - ์‹œ์ž‘ํ•˜๊ธฐ

Moolbumยท2021๋…„ 11์›” 16์ผ
1

React

๋ชฉ๋ก ๋ณด๊ธฐ
1/23
post-thumbnail

React๐Ÿ‘จโ€๐Ÿ’ป

ํ”„๋ก ํŠธ์—”๋“œ ๊ธฐ์ˆ ์—์„œ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ธฐ์ˆ  React ๋ฅผ ์ตํžˆ๋Š” ์ฒซ ๋‚ ์ด๋‹ค!
React๋Š” Javascript ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค (UI) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐฉ๊ฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—„์—ฐํžˆ ๋‹ค๋ฅด๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค๋ฅธ์‚ฌ๋žŒ๋“ค์ด ๋งŒ๋“ค์–ด๋‘” ํ‹€ ์•ˆ์—์„œ ์ž‘์—…์„ ํ•˜๋Š”๊ฒƒ
ex) Vue,Angular

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‚ด ์ž‘์—…์— ๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ๋งŒ๋“ค์–ด๋‘” ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ
ex)React

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ React๋Š” ๊ธฐ์ˆ ์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด third-party๋ฅผ ์„ค์น˜ํ•˜๊ณ 
React-Router ๋“ฑ ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.


Node & NPM

Node.js

Node.js๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ ๋ฐ–(ex:์„œ๋ฒ„)์—์„œ๋„ ์ž‘์—… ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฃผ์š” ๋„๊ตฌ๋“ค(ex. ๋ฐ”๋ฒจ, ์›นํŒฉ)์ด Node.js ๊ธฐ๋ฐ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹คโ—๏ธ

์„ค์น˜ ํ™•์ธ ๋ฐฉ๋ฒ• 
node -v 

NPM

Node ๊ธฐ๋ฐ˜์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด npm(node package manager)์ด๋ผ๋Š” ํŒจํ‚ค์ง€ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์„ค์น˜ ํ™•์ธ ๋ฐฉ๋ฒ• 
npm -v 

CRA (Create React App)๐Ÿ‘จโ€๐Ÿ’ป

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•ด์ฃผ๋Š” ๋„๊ตฌ

CRA ์„ค์น˜
npx create-react-app .

. ์€ ํ˜„์žฌ๊ฒฝ๋กœ


Component

Component : ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ UI ๊ตฌ์„ฑ๋‹จ์œ„

Component ํŠน์ง•
1. ์žฌ์‚ฌ์šฉ์— ์šฉ์ดํ•˜๋‹ค
2. ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์— ์šฉ์ดํ•˜๋‹ค.
3. ํŽ˜์ด์ง€ ๊ตฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์‰ฝ๋‹ค.
4. ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ / ์ž์‹ ์ปดํฌ๋„ŒํŠธ)
5. ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ / ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

1๏ธโƒฃ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ (function)

์ปดํฌ๋„ŒํŠธ ์„ ์–ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” ํด๋ž˜์Šคํ˜• ์„ ์–ธ ๋ฐฉ์‹๋ณด๋‹ค ์‰ฝ๊ณ  ๊ฐ„๊ฒฐํ•˜๋‹ค! hook ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด์„œ ์ด์ „๋ณด๋‹ค state๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์–ด ํ˜„์—…์—์„œ ๋งŽ์ด ์“ฐ์ธ๋‹ค!

import React from 'react'

function Main() {
  return (
    <>
      <Navigation />
      <div className="main">
        <FeedsContainer />
        <RecommendContainer />
      </div>
    </>
  );
}

2๏ธโƒฃ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ (Class)

ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ๋Š” renderํ•จ์ˆ˜๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ  JSX๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

import React from 'react'

class Component extends React.Component {
  render() {
    return (
    <div>
    	<h1>This is Class Component!</h1>
    </div>
    )
  }
}
export default Component

JSX

JavaScript Syntax Extension
JSX๋ž€ ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ™•์žฅ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค.
JSX๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋ฐ”๋ฒจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ˜•ํƒœ์˜ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ JSX ์žฅ์ 

  1. HTML ํƒœ๊ทธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๊ธฐ์‰ฝ๋‹ค.
  2. HTML ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ JavaScript๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

2๏ธโƒฃJSX ํŠน์ง•

1.class --> className ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•œ๋‹ค.

2.Self Closing tag : ๊ธฐ์กด์˜ <p></p> ํƒœ๊ทธ์ฒ˜๋Ÿผ ๋‹ซ์•„์ฃผ๋Š” ํƒœ๊ทธ์—†์ด <p />๋กœ ๊ฐ€๋Šฅํ•˜๋‹ค.

3. ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ฐ์‹ธ๋Š” ์ตœ์ƒ์œ„ ์š”์†Œํ•„์š” (React Fragments: <>..</>) : ๋‚ด๋ถ€์š”์†Œ๋ฅผ ๊ฐ์‹ธ๋Š” ์ตœ์ƒ์œ„ ์š”์†Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Fragments๋กœ ๋ถˆํ•„์š”ํ•œ <div>ํƒœ๊ทธ๋Š” ์‚ฌ์šฉ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

4. inline Styling : <div style ={{color : "red"}}Hello React</div>

5. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„ : { ... javascript ... }

profile
Front-End Developer ๐Ÿ‘จโ€๐Ÿ’ป

0๊ฐœ์˜ ๋Œ“๊ธ€