๐Ÿ’ช React. Component Reuse

[meษช]ยท2021๋…„ 9์›” 6์ผ
0

1-3. Today I Learned. React.js

๋ชฉ๋ก ๋ณด๊ธฐ
4/9

๐Ÿ“Œ ๊ฐœ๋ฐœ ๊ณต๋ถ€ 1๊ฐœ์›” ์ฐจ์ธ to-be ๊ฐœ๋ฐœ์ž์˜ ์ž์Šต ๋ธ”๋กœ๊ทธ๐Ÿ™‚๏พ Aug 30 ~ Sep 3, 2021

ํ˜„์žฌ ์ƒํƒœ

https://www.notion.so/wecode/React-f808df453fec45e494bd39d888d73530

<component์™€ component ์žฌ์‚ฌ์šฉ>

  • component๋Š” props ๊ฐ’์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅด UI๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์–ด (์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง)
  • component๋Š” ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์„ค๊ณ„ํ•ด์•ผ ํ•ด
  • props, children์˜ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์ดํ•ดํ•ด์•ผ ํ•ด

๊ณต์‹ ๋ฌธ์„œ ํ•„๋… ๋งํฌ

component๋ฅผ ์Œ“์•„์„œ ํ™ˆํŽ˜์ด์ง€ ํ•˜๋‚˜๋ฅผ ๋งŒ๋“œ๋Š” ๊ฑฐ์•ผ. ๊ทธ๋ž˜์„œ ์„ค๊ณ„๊ฐ€ ์ค‘์š”ํ•ด.
ํŒŒ์ผ ์ค‘์ฒฉ ๋„ˆ๋ฌด ๋งŒ์ด ํ•˜์ง€ ๋ง๊ณ  ์ตœ๋Œ€ 4๊ฐœ ๋ฏธ๋งŒ์œผ๋กœ ํ•ด. ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํƒ€๊ณ  ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์ง€ ํŒŒ์ผ์ด ๋„ˆ๋ฌด ๋งŽ์ด ์ค‘์ฒฉ๋˜๋ฉด react์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋ณต์žกํ•ด์ ธ.

  • ์ปดํฌ๋„ŒํŠธ ์ถ”์ถœ : ์ปดํฌ๋„ŒํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜์ง€ ๋ง๊ธฐ
    - UI ์ผ๋ถ€๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ (button, pannel, avatar)
    • UI ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š๋”๋ผ๋„ ์ผ๋ถ€๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ๋ณต์žกํ•œ ๊ฒฝ์šฐ (app, feedstory, comment) ex Nav bar

(์ฐธ๊ณ )
๋””์ž์ธ์‹œ์Šคํ…œ์ด ๊ตฌ์ถ•๋˜์–ด ์žˆ๋Š” ํšŒ์‚ฌ ex ํ† ์Šค, ๋ฐฐ๋‹ฌ์˜๋ฏผ์กฑ, google materials
material-ui.com > component
(/)

์™“์ฑ , ๋ผ์ธํ”„๋ Œ์ฆˆ git clone ๋ฐ›์•„์„œ ์ปดํฌ๋„ŒํŠธ๋ž‘ ๊ธฐ๋Šฅ ์‚ดํŽด๋ณด๊ณ  ๋‚ด ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•˜๊ธฐ
๋งํฌ account ๋ถ€๋ถ„

๊ทธ๋ ‡๋‹ค๊ณ  ์ „๋ถ€ ๋‹ค component๋กœ ๋งŒ๋“œ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ props๋กœ ๋‹ฌ๋ฆฌ ํ‘œ์‹œํ•ด ์ฃผ๊ณ  ์‹ถ์€ ๊ฐ’๋“ค์„ component์— ๋„˜๊ฒจ์„œ ํ•˜๋‚˜์˜ component๋กœ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด

// before -> ๋‘ ๊ฐœ์˜ ๋‚ด์šฉ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ
isMyID ? <ProfileMyID /> : <ProfileOtherID />

// after -> ๋‘ ๊ฐœ์˜ ๋‚ด์šฉ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ
const MY_ID = 'mine'
const OTHER_ID = 'others'

isMyID ? <Profile userID={MY_ID} /> : <Profile userID={OTHER_ID} />```

์ปดํฌ๋„ŒํŠธ ๋ฏธ๋ฆฌ ๋นผ๋†”๋ผ์ž‰
์ปดํฌ๋„ŒํŠธ๋Š” js ํŒŒ์ผ์„ css ํŒŒ์ผ๊นŒ์ง€ ๊ฐ™์ด ์“ด๋‹ค์ž‰

this.props.children
https://ko.reactjs.org/docs/glossary.html#propschildren

์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , ๊ทธ ์•ˆ์ชฝ์— ๊ฐ๊ฐ ์š”์†Œ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๊ฑด? ๋ฐฐ์—ด์ด์ž–์•„.
๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ map ๋Œ๋ฆฌ๋ฉด returnํ•  ๋•Œ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋ผ.
ํƒœ๊ทธ๋„ ์ด๋ ‡๊ฒŒ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ , ํ•˜์œ„ ํƒœ๊ทธ๋ฅผ children์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด.
component๊ฐ€ ๊ฐ์‹ธ๊ณ  ์žˆ๊ณ , ์•ˆ์— ๊ตฌ๋ฉ์ด ๋ฟ…๋ฟ… ๋šซ๋ ค์žˆ์–ด์„œ ๊ฑฐ๊ธฐ์— children์„ ๋„ฃ์–ด์„œ ์“ด๋‹ค๊ณ  ์ƒ๊ฐํ•ด.

profile
๋Š๋ ค๋„ ํ•  ๊ฑฐ์•ผ.......

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