๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€92

์Šคํƒ๊ณผ ํ ์Šคํƒ ์Šคํƒ(stack)์€ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์ด ํ›„์ž…์„ ์ถœ(LIFO)๋กœ ์ด๋ค„์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ → ํ›„์ž…์„ ์ถœ์€ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ํ•œ์ชฝ์—์„œ๋งŒ ์ผ์–ด๋‚จ ์ƒˆ ๊ฐ’์ด ์Šคํƒ์— ๋“ค์–ด๊ฐ€๋ฉด top์ด ์ƒˆ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์Šคํƒ์—์„œ ๊ฐ’์„ ๋นผ๋‚ผ ๋•Œ pop๋Š” top์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์„ ์Šคํƒ์—์„œ ๋นผ๊ฒŒ ๋˜์–ด ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์—ˆ๋˜ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. [ํŒŒ์ด์ฌ์˜ ์Šคํƒ] ์œ„์น˜ top: ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ์œ„์น˜ ์—ฐ์‚ฐ(๋ฆฌ์ŠคํŠธ ์ด๋ฆ„์ด s์ผ ๋•Œ) s.append(data): top ์œ„์น˜์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์—ฐ์‚ฐ s.pop(): top ์œ„์น˜์— ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ s[-1]: top ์œ„์น˜์— ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ ํ ํ(queue)๋Š” ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์ด ์„ ์ž…์„ ์ถœ(FIFO)๋กœ ์ด๋ค„์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ → ๋จผ์ € ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ.. 2022. 11. 27.
Immer ๋ฆฌ์•กํŠธ์—์„œ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•  ๋•Œ์—๋Š” ๋ถˆ๋ณ€์„ฑ์„ ์ง€์ผœ์•ผ ํ•จ immer ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜๋ฉด ๊น”๋”ํ•˜๊ฒŒ ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ immer๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ, ๋ถˆ๋ณ€์„ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์œผ๋ฉด์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ฃผ๋ฉด Immer๊ฐ€ ๋ถˆ๋ณ€์„ฑ ๊ด€๋ฆฌ ๋Œ€์‹  ํ•ด์คŒ Immer ์‚ฌ์šฉ๋ฒ• Immer ์„ค์น˜ $ yarn add immer ์ฝ”๋“œ ์ƒ๋‹จ์— Immer ๋ถˆ๋Ÿฌ์˜ด → ๋ณดํ†ต produce์ด๋ฆ„์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด import produce form ‘immer’; produce ํ•จ์ˆ˜ ์‚ฌ์šฉ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ: ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ์€ ์ƒํƒœ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ: ์–ด๋–ป๊ฒŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์„์ง€ ์ •์˜ํ•˜๋Š” ํ•จ์ˆ˜(๋ถˆ๋ณ€์„ฑ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ  ๊ทธ๋ƒฅ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์•Œ์•„์„œ ํ•ด์คŒ) const state={ number:1, dontChangeMe: 2 }; const nextS.. 2022. 11. 24.
Context API https://ko.reactjs.org/docs/context.html Context – React A JavaScript library for building user interfaces ko.reactjs.org Context: ๋‹จ๊ณ„๋งˆ๋‹ค ์ผ์ผ์ด props๋ฅผ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š๊ณ ๋„ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ์ „์ฒด์— ๋ฐ์ดํ„ฐ ์ œ๊ณต ๐Ÿ’ก React ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ props ์ „๋‹ฌ ๋ฐฉ์‹: ์œ„์—์„œ ์•„๋ž˜๋กœ(๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ) → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•ˆ์˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋“ค์— ์ „๋‹ฌํ•ด์ค˜์•ผ ํ•˜๋Š” props์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ณผ์ • ๋ฒˆ๊ฑฐ๋กœ์›€ โญ๏ธ context ์ด์šฉํ•˜์—ฌ ํŠธ๋ฆฌ ๋‹จ๊ณ„๋งˆ๋‹ค ๋ช…์‹œ์ ์œผ๋กœ props๋ฅผ ๋„˜๊ฒจ์ฃผ์ง€ ์•Š์•„๋„ ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•ด๋‹น ๊ฐ’ ๊ณต์œ  ๊ฐ€๋Šฅ โ—๏ธํŠน์ • ํ•จ์ˆ˜๋ฅผ ํŠน์ • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฑฐ์ณ์„œ ์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์ด 3~4๊ฐœ ์ด์ƒ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ.. 2022. 11. 24.
์ปค์Šคํ…€ Hooks ๋งŒ๋“ค๊ธฐ ์ปค์Šคํ…€ Hooks ๋งŒ๋“ค๊ธฐ → ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉ ์ปค์Šคํ…€ Hooks๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋Š” use๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ , ๊ทธ ์•ˆ์— ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•: useState, useEffect, useReducer, useCallback ๋“ฑ Hooks๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฐ’๋“ค ๋ฐ˜ํ™˜ ์ปดํฌ๋„ŒํŠธ์˜ ๋กœ์ง์„ ๋ถ„๋ฆฌ์‹œ์ผœ ํ•„์š”ํ•  ๋•Œ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ex) input ๊ด€๋ฆฌํ•˜๋Š” ์ฝ”๋“œ ์ปค์Šคํ…€ Hook ๋งŒ๋“ค๊ธฐ import { useState, useCallback } from "react"; function useInputs(initialForm) { const [form, setForm] = useState(initialForm); //change const onCha.. 2022. 11. 24.