[React] Styled-Components ํ™œ์šฉ
๐Ÿ“” Studying/React 2022. 12. 8. 20:50

React์—์„œ์˜ CSS ๋ฆฌ์•กํŠธ์—์„œ CSS๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. CSS ํŒŒ์ผ์„ import ํ•˜๊ฑฐ๋‚˜ module๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , SASS ๊ฐ™์€ ์ „์ฒ˜๋ฆฌ๊ธฐ๋‚˜ tailwind ๋“ฑ์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ์ค‘์—์„œ ์˜ค๋Š˜์€ Styled-components์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. Styled-components์— ๋Œ€ํ•ด์„œ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„์ด ๋งŽ์•˜๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๋” ํŽธํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค! Styled-components Styled-components๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ˆ์— CSS๋ฅผ ์ž‘์„ฑํ•˜๋Š” CSS-in-JS ๋ฐฉ์‹์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด์„œ CSS ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊พธ๋ฐ€ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ CSS-in-JS ๋ฐฉ์‹์˜ ํŒจํ‚ค์ง€๊ฐ€ Styled-compo..

[React] State์™€ Props
๐Ÿ“” Studying/React 2022. 12. 7. 21:39

๋ฆฌ์•กํŠธ์˜ state์™€ props์— ๋Œ€ํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค..! ํ˜„์žฌ ๋‚ด์šฉ์€ ์ถ”ํ›„ ๋ง๋ถ™์—ฌ์ง€๊ฑฐ๋‚˜ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ˜‡ ((์ž˜๋ชป๋œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฒจ์–ธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค..)) State ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋ฐ”๋€” ์ˆ˜ ์žˆ๋Š” ๊ฐ’. useState ํ›…์„ ํ†ตํ•ด ๋ฆฌ์•กํŠธ์— state์˜ ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žฌํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์ดํ›„ JSX๊ฐ€ ๋‹ค์‹œ ํ‰๊ฐ€๋˜๋ฉฐ ๋ณ€ํ™”๋œ ๋ถ€๋ถ„์„ ํ™”๋ฉด์— ๋ Œ๋”๋งํ•œ๋‹ค. const [state, setState] = useState(''); state์— ๋ฐ”๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์•ˆ ๋ ๊นŒ? useState๊ฐ€ const๋กœ ์ž‘์„ฑ๋œ ์ด์œ ๋Š”?? ๐Ÿค” ์šฐ์„  state๋Š” setState ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. state๋ฅผ ๋ฐ”๋กœ ์“ฐ๋ฉด ์•ˆ ๋˜๋‚˜? ์‹ถ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ state๊ฐ€ ์ง์ ‘ ์ˆ˜์ •๋  ์œ„ํ—˜์„ ๋ฐฉ์ง€..

React ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2022. 12. 6. 21:25

๋ฆฌ์•กํŠธ๋กœ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ useState์™€ useRef ํ›… ๋งŒ์„ ์ด์šฉํ•ด์„œ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฐฐํฌ๋œ ์ฃผ์†Œ๋Š” ์•„๋ž˜. https://todolist-phi-rouge.vercel.app/ ๋‹ค๋ฅธ ํ›…์€ ์ด์šฉํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ์„ ๋•Œ ์œ ์ง€๊ฐ€ ๋œ๋‹ค๊ฑฐ๋‚˜.. ์ด๋Ÿฐ ๋ถ€๋ถ„์€ ์•ˆ๋˜์ง€๋งŒ! ํ•œ๋™์•ˆ ๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ ํ•˜๋‹ค๊ฐ€ ๋ฆฌ์•กํŠธ๋กœ ๋‹ค์‹œ ๋Œ์•„์˜ค๋‹ˆ State๋ž€ ๋…€์„์ด ์ƒˆ๋กญ๊ฒŒ ๋‹ค๊ฐ€์™€์„œ ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๋ฉฐ ์ข€ ํ—ค๋งจ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ํˆฌ๋‘ ๊ฐ์ฒด์— id๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ ํˆฌ๋‘๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์•„์ด๋””๋ฅผ ๋‹ฌ์•„์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, useRef ํ›…์„ ์ด์šฉํ•ด๋ณด์•˜๋‹ค. useRef() useRef๋Š” current๋ผ๋Š” ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋•Œ ์ธ์ž๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ๊ฐ’์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ current์— ..

[React] PropTypes๋กœ props ํƒ€์ž… ๊ฒ€์‚ฌ
๐Ÿ“” Studying/React 2022. 12. 5. 20:49

PropTypes ๋ฆฌ์•กํŠธ์—์„œ๋Š” props๋ฅผ ํ†ตํ•ด์„œ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์šฐ์—ฐ์ฐฎ๊ฒŒ props์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์–ด ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. props์— ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ? ์š”์ƒˆ ํ•ซํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š”๋ฅผ ์“ฐ๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜๋Š” ํƒ€์ž…์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ฒดํฌํ•ด์„œ ์—๋Ÿฌ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•จ๋„ ์žˆ๋‹ค. props์— ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋„ ์ด์™€ ๊ฒฐ์ด ๊ฐ™๋‹ค๊ณ  ๋ณธ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ž˜๋ชป๋œ ํƒ€์ž…์˜ props๋ฅผ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜, ํ•„์š”ํ•œ props๊ฐ€ ๋ˆ„๋ฝ๋œ๋‹ค๋ฉด ์˜๋„์น˜ ์•Š์€ ์—๋Ÿฌ๋กœ ์ด์–ด์งˆ ๊ฒƒ!.. PropTypes๋Š” ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด PropTypes๋Š” React v15.5๋ถ€ํ„ฐ prop-types๋ผ๋Š” ํŒจํ‚ค์ง€๋กœ ๋ถ„๋ฆฌ๋˜์—ˆ๋‹ค!....

[Javascript] ๋„ ๋ณ‘ํ•ฉ์—ฐ์‚ฐ์ž '??'์™€ ์˜ต์…”๋„ ์ฒด์ด๋‹ '?.'
๐Ÿ“” Studying/JavaScript 2022. 12. 1. 21:23

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ '?' ES2020์—์„œ ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•๋“ค ์ค‘ ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž ?. ์™€ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ?? ๋Š” ๋ชจ๋‘ ๋ฌผ์Œํ‘œ๋ฅผ ์“ด๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹๋„ null์ด๋‚˜ undefined ๊ฐ’์„ ์ฒดํฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋น„์Šทํ•œ ๊ฒƒ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„, ์ด ๋‘˜์„ ํ•œ๋ฒˆ ๋ฌถ์–ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ฉด ์ข‹๊ฒ ๋‹ค ์‹ถ์–ด์„œ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๐Ÿ™‚ null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž ์šฐ์„  null ๋ณ‘ํ•ฉ ์—ฐ์‚ฐ์ž(nullish coalescing) ??์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ undefined์ด๋‚˜ null์ด ์•„๋‹Œ ๊ฐ’์ด ํ• ๋‹น๋œ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. a ?? b ์ด ์—ฐ์‚ฐ์ž๋Š” ์œ„์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. a๊ฐ€ null ๋„ ์•„๋‹ˆ๊ณ  undefined๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด a ๊ทธ ์™ธ(null์ด๋‚˜ undefined)..

[Javascript] ์‹คํ–‰ ์ปจํ…์ŠคํŠธ
๐Ÿ“” Studying/JavaScript 2022. 11. 30. 21:42

์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์•Œ์•„๋ณด์ž! ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์ฑ…์„ ์ฝ๋˜ ๋‚˜๋‚ ๋“ค... ๊ทธ๋Ÿฌ๋‚˜ ํ…์ŠคํŠธ๋งŒ์œผ๋กœ๋Š” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ๋˜ ๋‚˜.. ํ•˜์ง€๋งŒ ์ด๋Œ€๋กœ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์—†์ง€.. ๐Ÿค” ์ด๋ฒˆ ๊ธฐํšŒ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ณด๋‹ค ๊นŠ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด์ž! ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์ฝœ ์Šคํƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ฝœ ์Šคํƒ ์šฐ์„  ์Šคํƒ์€ ์œ„์™€ ๊ฐ™์ด ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐจ๋ก€๋Œ€๋กœ ์Œ“๊ณ  ๋นผ๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค. ์ฝœ ์Šคํƒ์€ ๊ฐ€์žฅ ์œ„์— ์Œ“์—ฌ์žˆ๋Š” ์ปจํ…์ŠคํŠธ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ์™€ ํ™˜๊ฒฝ์„ ๊ด€๋ฆฌํ•œ๋‹ค. ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ฝœ ์Šคํƒ์˜ ์ตœ์ƒ์œ„์— ์กด์žฌํ•œ๋‹ค! ์ด๋Ÿฐ ์ฝ˜ํ…์ŠคํŠธ๋ฅผ ์‹คํ–‰ ์ค‘์ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ (running execution context)๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋ญ๊ธธ๋ž˜ ์ฝœ ..

[Javascript] ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ
๐Ÿ“” Studying/JavaScript 2022. 11. 29. 20:54

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋จผ์ € ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ ์ฐธ์กฐํ˜•์œผ๋กœ๋Š” ์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. Object Array ํ•จ์ˆ˜(function) Date ์ •๊ทœํ‘œํ˜„์‹ Map, Set ์ž๋ฃŒ ๊ตฌ์กฐ + null๋„ object ํƒ€์ž…! ์ฐธ์กฐํ˜• ํƒ€์ž…๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค. ์‹ค์ œ ๊ฐ์ฒด ๋‚ด ํ”„๋กœํผํ‹ฐ๋“ค์ด ๋‹ด๊ธด ์ฃผ์†Œ ๊ฐ’๋“ค์„ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ์ฃผ์†Œ ๊ฐ’!.. ์„ ๋ณต์‚ฌํ•ด์„œ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐํ˜•์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 1. obj1์„ ์œ„ํ•œ ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ ์˜์—ญ ์•ˆ์˜ ํ”„๋กœํผํ‹ฐ๋“ค์€ ๋˜ ๊ทธ ์•ˆ์—์„œ ๊ฐ๊ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ์žˆ๋‹ค. (์œ„์˜ ์ฃผ์†Œ 7103~7104 ๋ถ€๋ถ„) 2. ๋ฐ์ดํ„ฐ ์˜์—ญ ์•ˆ์— ํ”„๋กœํผํ‹ฐ๋“ค์˜ ์ฃผ์†Œ ๊ฐ’์ด ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์„ ๋ฐ›๋Š”๋‹ค. 3. obj1์€ 2์˜ ์ฃผ์†Œ ๊ฐ’์„ ์ฐธ์กฐํ•œ๋‹ค. ๊ฒฐ๊ตญ ๊ธฐ๋ณธํ˜•๊ณผ์˜ ์ฐจ์ด๋Š” ๊ธฐ๋ณธํ˜•์€ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ..

๊ธฐ์ดˆํ”„๋กœ์ ํŠธ swivee๋ฅผ ๋งˆ์น˜๋ฉฐ
๐Ÿ“˜ Retrospect/NBC Projects 2022. 11. 28. 19:48

๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ์น˜๋ฉฐ ์•„์ฃผ ์—ด์‹ฌํžˆ ๋‹ฌ๋ฆฐ ๊ธฐ์ดˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋์ด ๋‚ฌ๋‹ค!.. ํ”ผ๊ณค๊ณผ ์ŠคํŠธ๋ ˆ์Šค๋กœ ์ธํ•ด ์ธํ›„์—ผ์„ ์–ป๊ณ  ๋ง์•˜์ง€๋งŒ.. ๐Ÿฅบ ์ง€๋‚œ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋” ๊ณ„ํš์ ์ด๊ณ  ์™„์„ฑ๋„ ๋†’์€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐœํ‘œํ•ด์„œ ๊ธฐ์˜๋‹ค. ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ํŠœํ„ฐ๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ”ํƒ•์œผ๋กœ, ๋˜ ๊ฐœ์ธ์ ์œผ๋กœ ์ข‹์•˜๋˜ ๋ถ€๋ถ„๊ณผ ์•„์‰ฌ์šด ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์•„์‰ฌ์› ๋˜ ๋ถ€๋ถ„ ๋’ค๋กœ ๊ฐ€๊ธฐ๊ฐ€ ์•ˆ ๋˜๋Š” ์  ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ์ƒ SPA๋กœ ๊ตฌํ˜„์„ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— hash URL์„ ์ด์šฉํ•ด์•ผ๋งŒ ํ–ˆ๋Š”๋ฐ, ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ๋ธŒ๋žœ๋“œ๋ณ„ ์‹ ๋ฐœ > ๊ฐ ์‹ ๋ฐœ๋“ค์˜ ๋ชจ๋“  ๋ฆฌ๋ทฐ > ๋ฆฌ๋ทฐ ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด์–ด์ง€๋Š” ๊ตฌ์กฐ์˜€๊ธฐ ๋•Œ๋ฌธ์—?.. ์ด๋ฒคํŠธ ํƒ€๊ฒŸ์œผ๋กœ ๊ฐ’์„ ์ง€์ •ํ•ด์„œ ๋„˜์–ด๊ฐˆ ์ˆ˜๋ฐ–์— ์—†์—ˆ๋‹ค. ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๊ฒ ์ง€๋งŒ.. ๐Ÿฅบ ์ง€๊ธˆ์€ ๋ชจ๋ฆ„... ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์š”๊ธˆ์ œ ์ฝ๊ธฐ ํ• ๋‹น๋Ÿ‰์ด ์ด๋ ‡๊ฒŒ ๋นจ๋ฆฌ ์ฑ„..

Uncaught FirebaseError: The query requires an index. You can create it here:
๐Ÿ“” Studying/๐Ÿšง Errors 2022. 11. 25. 21:47

Uncaught FirebaseError: The query requires an index. You can create it here: ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋˜ ๋„์ค‘ ๋งŒ๋‚œ ์—๋Ÿฌ!.. ์ง€๊ธˆ๊นŒ์ง€๋Š” DB์— ์žˆ๋Š” ๋ชจ๋“  ๋Œ“๊ธ€์„ ๊ฐ€์ ธ์™€์„œ ๋ Œ๋”๋ง ํ•ด์ฃผ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ๊ฐ ๋ฆฌ๋ทฐ์—๋งŒ ์ž‘์„ฑํ•œ ๋Œ“๊ธ€์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๊ฐ€ ๋งŒ๋‚ฌ๋‹ค. ์œ„์˜ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ฉด ์ธ๋ฑ์Šค(์ƒ‰์ธ)๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ๊ณ  ์žˆ๋‹ค. ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฌธ ๋ณด๋ฉด where์™€ orderBy๋ฅผ ํ•จ๊ป˜ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ ๋ณตํ•ฉ ์ฟผ๋ฆฌ์—ฌ์„œ ๊ทธ๋Ÿฐ์ง€ ์ € ๋ถ€๋ถ„์— ์ƒ‰์ธ์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ํ•ด๊ฒฐ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์ฝ˜์†”์—์„œ firestore์— ๋“ค์–ด์˜ค๋ฉด ํƒญ์— ์ƒ‰์ธ์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค. ์ƒ‰์ธ ์ถ”๊ฐ€๋ฅผ ๋ˆ„๋ฅด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณตํ•ฉ ์ƒ‰์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ ์šฉํ•  ์ปฌ๋ ‰์…˜๊ณผ ํ•„์š”ํ•œ ํ•„๋“œ๋“ค์˜..

JS ํŒŒ์ด์–ด๋ฒ ์ด์Šค DB ๋ฐ์ดํ„ฐ count ์ง‘๊ณ„ํ•ด์„œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
๐Ÿ“” Studying/๐Ÿ’Œ TIL 2022. 11. 24. 21:07

Today, What I learned? ์–ด๋Š๋ง ํ”„๋กœ์ ํŠธ๊ฐ€ ์ค‘ํ›„๋ฐ˜ ์ •๋„ ์™”๋‹ค. ๐Ÿ˜‡ ๋‚˜์˜ ๋‹ด๋‹น ๊ธฐ๋Šฅ์„ ์–ผ์ถ” ๋งˆ๋ฌด๋ฆฌ ํ•œ ๋‚ !... ์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์˜ DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘๊ณ„ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์‚ฝ์งˆ์„ ๊ฝค ๋งŽ์ด ํ•˜๊ธฐ๋„ ํ•จ ใ…Ž (2์‹œ๊ฐ„๊ฐ€๋Ÿ‰..) getCountFromServer getCountFromServer ๋ผ๋Š” ํŒŒ์ด์–ด๋ฒ ์ด์Šค API๊ฐ€ ์žˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์Šค๋ƒ…์ƒท์„ ์ฐ์–ด์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜์ด๊ณ , ํ˜„์žฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์—์„œ ์ง์ ‘์ ์ธ ์‘๋‹ต์„ ํ†ตํ•ด์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋™ํ•œ๋‹ค. const coll = collection(db, "cities"); const query_ = query(coll, where('state', '==', 'CA')); const sn..