FrontEnd/React & React-Native

[React] Component

devwoodie 2023. 3. 14. 23:21
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“ Component

๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ Component๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Component์˜ ๊ธฐ๋Šฅ์€ ๋‹จ์ˆœํ•œ ํ…œํ”Œ๋ฆฟ์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์ด์— ๋งž์ถ”์–ด UI๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ณ  ๋ผ์ดํ”„์‚ฌ์ดํด API๋ฅผ ์ด์šฉํ•˜์—ฌ Component๊ฐ€ ํ™”๋ฉด์—์„œ ๋‚˜ํƒ€๋‚˜๊ณ  ์‚ฌ๋ผ์งˆ ๋•Œ, ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚  ๋•Œ ์ฃผ์–ด์ง„ ์ž‘์—…๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์„ ๋ถ™์—ฌ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“œ classํ˜• Component

  • ํด๋ž˜์Šคํ˜• Component์—์„œ๋Š” render ํ•จ์ˆ˜๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•˜๊ณ , ๊ทธ ์•ˆ์—์„œ ๋ณด์—ฌ ์ฃผ์–ด์•ผ ํ•  JSX๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
import { Component } from 'react';

class App extands Component {
    render(){
          const name = 'react';
        return <div className="react">{ name }</div>;
    }
}
export default App;

๐Ÿ“œ ํ•จ์ˆ˜ํ˜• Component

  • ํ•จ์ˆ˜ํ˜• Component์˜ ์žฅ์ 
    • ๋ฉ”๋ชจ๋ฆฌ ์ž์›์„ ํด๋ž˜์Šคํ˜• Component๋ณด๋‹ค ๋œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ํด๋ž˜์Šคํ˜• Component๋ณด๋‹ค ์„ ์–ธํ•˜๊ธฐ๊ฐ€ ํŽธํ•ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœ์ ํŠธ๋ฅผ ํ™˜์„ฑํ•˜์—ฌ ๋นŒ๋“œํ•œ ํ›„ ๋ฐฐํฌํ•  ๋•Œ๋„ ๊ฒฐ๊ณผ๋ฌผ์˜ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์Šต๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜ํ˜• Component์˜ ๋‹จ์ 
    • state์™€ ๋ผ์ดํ”„์‚ฌ์ดํด API์˜ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (๋ฆฌ์•กํŠธ v16.8 ์—…๋ฐ์ดํŠธ ์ดํ›„ Hooks๋ผ๋Š” ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜๋ฉด์„œ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.)
function App(){
      const name = 'react';
    return <div className="react">{ name }</div>;
}
export default App;

๐Ÿ“œ ๋ชจ๋“ˆ

  • ๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ(export)

Component ์ œ์ผ ํ•˜๋‹จ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

export default App;

์ด ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ์ด ํŒŒ์ผ์€ importํ•  ๋•Œ, ์œ„์—์„œ ์„ ์–ธํ•œ App Component๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ(import)

๋‚ด๋ณด๋‚ธ component๋ฅผ ๋‹ค๋ฅธ Component์— ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

import App from './App';

const Main = () => {
    return <App />;
};
export defautl Main;

728x90
๋ฐ˜์‘ํ˜•