๐Ÿ’ป React - Context API

waterglassesยท2022๋…„ 5์›” 29์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
31/50
post-thumbnail

โš ๏ธ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์€ ์˜คํƒ€๋‚˜ ์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ƒ ์˜ค๋Š˜ ๊ณต๋ถ€ํ•œ ๊ฒƒ

Context API

Context API

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.

๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ปดํฌ๋„ŒํŠธ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ props๋กœ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ปดํฌ๋„ŒํŠธ ์—ฌ๊ธฐ ์ €๊ธฐ์„œ ํ•„์š”ํ•œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ์ฃผ๋กœ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ Root ์˜ ๊ฐ’์„ G๊นŒ์ง€ ์ „๋‹ฌํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์—ฌ๋Ÿฌ๋ฒˆ ๊ฑฐ์ณ์„œ ๋‹ค๋ฃจ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค.

Context๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ๋Š” ์ƒ๊ด€์—†์ด ์ „์—ญ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ „์—ญ ๋ฐ์ดํ„ฐ๋ฅผ Context์— ์ €์žฅํ•œ ํ›„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

React.createContext

const MyStore = React.createContext(defaultValue);

Context ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ด context๋ฅผ ๊ฐ€์ง€๋ ค๋ฉด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ์ƒ์œ„์— provider๋กœ๋ถ€ํ„ฐ context๋ฅผ ์ •์˜ํ•œ ๋ณ€์ˆ˜ MyStore๋ฅผ ๊ฐ์‹ธ๋ฉด ๋œ๋‹ค.

Context.Provider

provider๋Š” ์ •์˜ํ•œ context๋ฅผ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
Provider๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Context์˜ value๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

<MyStore.Provider value={this.state}>
  <subComponent1 />
  <subComponent2 />
</MyStore.Provider>

Context.Consumer

context ๋ณ€ํ™”๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค.

<MyContext.Consumer>
  {value => /* context ๊ฐ’์„ ์ด์šฉํ•œ ๋ Œ๋”๋ง */}
</MyContext.Consumer>

๐Ÿ”ฅ ๋Š๋‚€์ 

๋ฆฌ์•กํŠธ์—์„œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Redux๋งŒ ์‚ฌ์šฉํ•ด๋ณด์•˜๋Š”๋ฐ context API๋ฅผ ์ฒ˜์Œ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. ๋ฆฌ๋•์Šค๋ณด๋‹ค ํ›จ์”ฌ ์‰ฝ๊ณ  ๊น”๋”ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์„ ๋ฐ›์•„์„œ ๋‚ด์ผ์€ ์ง์ ‘ ์˜ˆ์‹œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ํ™•์‹คํžˆ ์ดํ•ดํ•ด๋ด์•ผ๊ฒ ๋‹ค.

๊ฐ•์˜ ์กฐ๊ธˆ์”ฉ ๋” ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๋“ฃ์ž! ๊ทธ๋ฆฌ๊ณ  ์ปจ๋””์…˜ ์กฐ์ ˆ ์ž˜ํ•˜๊ธฐ!! ์ž˜ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ ์กฐ๊ธˆ๋งŒ ๋” ๋…ธ๋ ฅํ•˜์ž

Refer

profile
๋งค ์ˆœ๊ฐ„ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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