๐Ÿค” React ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ...?

 


JS๋ฅผ ์‚ฌ์šฉํ•ด HTML๋กœ ๊ตฌ์„ฑ๋œ UI๋ฅผ ์ œ์–ดํ–ˆ๋‹ค๋ฉด, DOM ๋ณ€ํ˜•์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋”ฐ๋ฅธ๋‹ค.
1. Selector API๋ฅผ ์‚ฌ์šฉํ•ด ํŠน์ • DOM์„ ์„ ํƒ
2. ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒ ์‹œ, ๋ณ€ํ™”๋ฅผ ์ฃผ๋„๋ก ์„ค์ •

๋‹ค๋งŒ, ์›น์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๋ฉด, DOM์„ ์ง์ ‘ ๊ฑด๋“œ๋ฆด ๋•Œ ์ฝ”๋“œ๊ฐ€ ๋‚œ์žกํ•ด์ง€๊ธฐ ์‰ฝ๋‹ค.
์ฒ˜๋ฆฌํ•ด์•ผํ•  ์ด๋ฒคํŠธ, ๊ด€๋ฆฌํ•ด์•ผํ•  ์ƒํƒœ๊ฐ’, DOM ๋“ฑ์ด ๋‹ค์–‘ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ.
์ด๋กœ ์ธํ•ด ์—…๋ฐ์ดํŠธ ๊ทœ์น™๋„ ๋งŽ์ด ๋ณต์žกํ•ด์ง€๊ฒŒ๋œ๋‹ค.

React๋Š” ์–ด๋–ค ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ๊ทธ ์ƒํƒœ์— ๋”ฐ๋ผ DOM์„ ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ง€ ๊ทœ์น™์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ, ์•„์˜ˆ ๋‹ค ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š”, ๊ฐ€์ƒ์˜ DOM์ธ Virtual DOM๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

Ex.
import React from 'react';
๋ฅผ ํ†ตํ•ด react ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
react ์ปดํฌ๋„ŒํŠธ๋Š” XMLํ˜•์‹์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ์ด๋ฅผ JSX๋ผ ๋ถ€๋ฅธ๋‹ค.

export default Hello;
์ด๋Š” Hello๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚ด๋ณด๋‚ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
ex)
import Hello from './Hello';

import React from 'react';

function Hello() {
    return (
            <div>
                Hello World
            </div>
        );
}

export default Hello;

 

 

 

 

 

 

 


๐Ÿค” JSX...?

JSX๋Š” react์˜ ์ƒ๊น€์ƒˆ๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ HTML๊ฐ™์ด ์ƒ๊ธด JS์ด๋‹ค.

return <div>์•ˆ๋…•</div>;
react ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ์—์„œ XMLํ˜•ํƒœ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด babel์ด JSX๋ฅผ JS๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
babel: JS์˜ ๋ฌธ๋ฒ•์„ ํ™•์žฅํ•ด์ฃผ๋Š” ๋„๊ตฌ

ex)
import React from 'react';
import Hello from './Hello';

function App() {
  return (
    <>
      <Hello />
      <div>์•ˆ๋…•ํžˆ๊ณ„์„ธ์š”</div>
    </>
  );
}

export default App;


๐Ÿ“Œ JSX์—์„œ ํƒœ๊ทธ์˜ style, CSS์˜ class๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
1. ์ธ๋ผ์ธ style์€ ๊ฐ์ฒดํ˜•ํƒœ๋กœ ์ž‘์„ฑ
2. HTML์—์„œ -๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๋‹จ์–ด๋Š” camelCaseํ˜•ํƒœ๋กœ ์ž‘์„ฑ
3. CSS์˜ ํด๋ž˜์Šค๋Š” className= ์œผ๋กœ ์„ค์ •

cf. ์ฃผ์„์€ {/**/} ๋‚˜ // ์„ ์‚ฌ์šฉํ•จ.
๋ฅผ ์‚ฌ์šฉํ•ด HTML๋กœ ๊ตฌ์„ฑ๋œ UI๋ฅผ ์ œ์–ดํ–ˆ๋‹ค๋ฉด, DOM ๋ณ€ํ˜•์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋”ฐ๋ฅธ๋‹ค.

1. Selector API๋ฅผ ์‚ฌ

 

 

 

 

 


๐Ÿ“Œ props๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’ ์ „๋‹ฌํ•˜๊ธฐ
- properties์˜ ์ค„์ž„๋ง๋กœ ์ปดํฌ๋„ŒํŠธ์— ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.

Ex) App ์ปดํฌ๋„ŒํŠธ์—์„œ Hello์ปดํฌ๋„ŒํŠธ์˜ name์ด๋ผ๋Š” ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

โˆ™Hello.js ์ปดํฌ๋„ŒํŠธ
import React from 'react';

function Hello(props) {
  return <div>์•ˆ๋…•ํ•˜์„ธ์š” {props.name}</div>
}

export default Hello;

 

โˆ™App.js ์ปดํฌ๋„ŒํŠธ
import React from 'react';
import Hello from './Hello';

function App() {
  return (
    <Hello name="react" />
  );
}

export default App;

 

cf) ์—ฌ๋Ÿฌ๊ฐœ์˜ props๋ฅผ ์ „๋‹ฌํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด?

โˆ™App.js
import React from 'react';
import Hello from './Hello';

function App() {
  return (
    <Hello name="react" color="red"/>
  );
}

export default App;โ€‹


โˆ™Hello.js

import React from 'react';

function Hello({ color, name }) {
  return <div style={{ color }}>์•ˆ๋…•ํ•˜์„ธ์š” {name}</div>
}

export default Hello;

 

defaultProps ๋กœ ๊ธฐ๋ณธ๊ฐ’ ์„ค์ •

์ปดํฌ๋„ŒํŠธ์— props ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ํ•  ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ปดํฌ๋„ŒํŠธ์— defaultProps ๋ผ๋Š” ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

import React from 'react';

function Hello({ color, name }) {
  return <div style={{ color }}>์•ˆ๋…•ํ•˜์„ธ์š” {name}</div>
}

Hello.defaultProps = {
  name: '์ด๋ฆ„์—†์Œ'
}

export default Hello;

 

+ Recent posts