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..
๋ฆฌ์กํธ์ state์ props์ ๋ํด์ ๊ฐ๋ณ๊ฒ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค..! ํ์ฌ ๋ด์ฉ์ ์ถํ ๋ง๋ถ์ฌ์ง๊ฑฐ๋ ์์ ๋ ์ ์๋ค. ๐ ((์๋ชป๋ ๋ถ๋ถ์ ๋ํ ์ฒจ์ธ์ ์ธ์ ๋ ํ์์ ๋๋ค..)) State ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ฐ๋ ์ ์๋ ๊ฐ. useState ํ ์ ํตํด ๋ฆฌ์กํธ์ state์ ๋ณํ๋ฅผ ์๋ ค์ ์ปดํฌ๋ํธ๊ฐ ์ฌํ๊ฐ๋ ์ ์๋๋ก ํ๋ค. ์ดํ JSX๊ฐ ๋ค์ ํ๊ฐ๋๋ฉฐ ๋ณํ๋ ๋ถ๋ถ์ ํ๋ฉด์ ๋ ๋๋งํ๋ค. const [state, setState] = useState(''); state์ ๋ฐ๋ก ๋ณ๊ฒฝํ๋ฉด ์ ๋ ๊น? useState๊ฐ const๋ก ์์ฑ๋ ์ด์ ๋?? ๐ค ์ฐ์ state๋ setState ํจ์๋ฅผ ํตํด์๋ง ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. state๋ฅผ ๋ฐ๋ก ์ฐ๋ฉด ์ ๋๋? ์ถ์ ์ ์๋๋ฐ, ์ด๋ ๊ฒ state๊ฐ ์ง์ ์์ ๋ ์ํ์ ๋ฐฉ์ง..
๋ฆฌ์กํธ๋ก ํฌ๋ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ useState์ useRef ํ ๋ง์ ์ด์ฉํด์ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์๋ค. ๋ฐฐํฌ๋ ์ฃผ์๋ ์๋. https://todolist-phi-rouge.vercel.app/ ๋ค๋ฅธ ํ ์ ์ด์ฉํ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋ก๊ณ ์นจ์ ํ์ ๋ ์ ์ง๊ฐ ๋๋ค๊ฑฐ๋.. ์ด๋ฐ ๋ถ๋ถ์ ์๋์ง๋ง! ํ๋์ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ง ํ๋ค๊ฐ ๋ฆฌ์กํธ๋ก ๋ค์ ๋์์ค๋ State๋ ๋ ์์ด ์๋กญ๊ฒ ๋ค๊ฐ์์ ํฌ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๋ฉฐ ์ข ํค๋งจ ๋ถ๋ถ์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ํฌ๋ ๊ฐ์ฒด์ id๊ฐ ๋ฃ์ด์ฃผ๊ธฐ ํฌ๋๋ง๋ค ๊ฐ๊ฐ์ ์์ด๋๋ฅผ ๋ฌ์์ฃผ๊ธฐ ์ํด์ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์์ง๋ง, useRef ํ ์ ์ด์ฉํด๋ณด์๋ค. useRef() useRef๋ current๋ผ๋ ์์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ด๋ ์ธ์๋ฅผ ๊ฐ๊ณ ์๋ค๋ฉด, ์ด ๊ฐ์ ์ด๊ธฐ๊ฐ์ผ๋ก current์ ..
PropTypes ๋ฆฌ์กํธ์์๋ props๋ฅผ ํตํด์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๊ณ , ์ด๋ฅผ ํตํด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค ์ ์๋ค. ์ฐ์ฐ์ฐฎ๊ฒ props์ ํ์ ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์ด ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. props์ ํ์ ๊ฒ์ฌ๋ฅผ? ์์ ํซํ ํ์ ์คํฌ๋ฆฝํธ๋๋ฅผ ์ฐ๋ ์ด์ ์ค ํ๋๋ ํ์ ์ ์๊ฒฉํ๊ฒ ์ฒดํฌํด์ ์๋ฌ๋ฅผ ์ค์ด๊ธฐ ์ํจ๋ ์๋ค. props์ ํ์ ๊ฒ์ฌ๊ฐ ํ์ํ ์ด์ ๋ ์ด์ ๊ฒฐ์ด ๊ฐ๋ค๊ณ ๋ณธ๋ค. ์ปดํฌ๋ํธ๊ฐ ์๋ชป๋ ํ์ ์ props๋ฅผ ์ ๋ฌ๋ฐ๊ฑฐ๋, ํ์ํ props๊ฐ ๋๋ฝ๋๋ค๋ฉด ์๋์น ์์ ์๋ฌ๋ก ์ด์ด์ง ๊ฒ!.. PropTypes๋ ์ด๋ฐ ์๋ฌ๋ฅผ ๋ฐฉ์งํด์ค ์ ์๋ค. ์ฐธ๊ณ ๋ก ๋ฆฌ์กํธ ๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด PropTypes๋ React v15.5๋ถํฐ prop-types๋ผ๋ ํจํค์ง๋ก ๋ถ๋ฆฌ๋์๋ค!....
์๋ฐ์คํฌ๋ฆฝํธ์ '?' ES2020์์ ๋์ ๋ ์๋ก์ด ๋ฌธ๋ฒ๋ค ์ค ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์ ?. ์ null ๋ณํฉ ์ฐ์ฐ์ ?? ๋ ๋ชจ๋ ๋ฌผ์ํ๋ฅผ ์ด๋ค. ์ฌ์ฉ๋๋ ๋ฐฉ์๋ null์ด๋ undefined ๊ฐ์ ์ฒดํฌํ ์ ์๋ค๋ ์ ์์ ๋น์ทํ ๊ฒ ์๋ ๊ฒ ๊ฐ์, ์ด ๋์ ํ๋ฒ ๋ฌถ์ด์ ์ ๋ฆฌํด๋ณด๋ฉด ์ข๊ฒ ๋ค ์ถ์ด์ ์์ฑํ๊ฒ ๋์๋ค. ๐ null ๋ณํฉ ์ฐ์ฐ์ ์ฐ์ null ๋ณํฉ ์ฐ์ฐ์(nullish coalescing) ??์ ๊ฐ๋จํ๊ฒ ๊ฐ์ด ํ ๋น๋์ด ์๋ ๋ณ์๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค. ์ฆ undefined์ด๋ null์ด ์๋ ๊ฐ์ด ํ ๋น๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๋ค. a ?? b ์ด ์ฐ์ฐ์๋ ์์ ๊ฐ์ด ์ธ ์ ์๋๋ฐ, ์ด๋ฐ ์์ผ๋ก ํด์ํ ์ ์๋ค. a๊ฐ null ๋ ์๋๊ณ undefined๊ฐ ์๋๋ผ๋ฉด a ๊ทธ ์ธ(null์ด๋ undefined)..
์คํ ์ปจํ ์คํธ๋ฅผ ์์๋ณด์! ์คํ ์ปจํ ์คํธ๋ฅผ ์ํด ์ฑ ์ ์ฝ๋ ๋๋ ๋ค... ๊ทธ๋ฌ๋ ํ ์คํธ๋ง์ผ๋ก๋ ์ฝ๊ฒ ์ดํดํ ์ ์์๋ ๋.. ํ์ง๋ง ์ด๋๋ก ๋์ด๊ฐ ์ ์์ง.. ๐ค ์ด๋ฒ ๊ธฐํ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ์ ๋์ ์๋ฆฌ๋ฅผ ๋ณด๋ค ๊น๊ฒ ์ดํดํ๊ธฐ ์ํด ์คํ ์ปจํ ์คํธ์ ๋ํด ์ ๋ฆฌํด๋ณด์! ์คํ ์ปจํ ์คํธ๋ฅผ ์๊ธฐ ์ํด์๋ ๋จผ์ ์ฝ ์คํ์ ๋ํด์ ์์์ผ ํ๋ค. ์ฝ ์คํ ์ฐ์ ์คํ์ ์์ ๊ฐ์ด ํ๋ํ๋ ์ฐจ๋ก๋๋ก ์๊ณ ๋นผ๊ณ ๋ฅผ ๋ฐ๋ณตํ๋ ์๋ฃ๊ตฌ์กฐ๋ค. ์ฝ ์คํ์ ๊ฐ์ฅ ์์ ์์ฌ์๋ ์ปจํ ์คํธ์ ๊ด๋ จ๋ ์ฝ๋๋ฅผ ์คํํ์ฌ ์ฝ๋์ ์คํ ์์์ ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ค. ํ์ฌ ์คํ์ค์ธ ์ฝ๋์ ์คํ ์ปจํ ์คํธ๊ฐ ์ฝ ์คํ์ ์ต์์์ ์กด์ฌํ๋ค! ์ด๋ฐ ์ฝํ ์คํธ๋ฅผ ์คํ ์ค์ธ ์คํ ์ปจํ ์คํธ (running execution context)๋ผ๊ณ ํ๋ค. ๊ทธ๋ผ ์ปจํ ์คํธ๊ฐ ๋ญ๊ธธ๋ ์ฝ ..
์ฐธ์กฐํ ๋ฐ์ดํฐ ๋จผ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ ํ์ ์ค ์ฐธ์กฐํ์ผ๋ก๋ ์ด๋ฐ ๊ฒ๋ค์ด ์๋ค. Object Array ํจ์(function) Date ์ ๊ทํํ์ Map, Set ์๋ฃ ๊ตฌ์กฐ + null๋ object ํ์ ! ์ฐธ์กฐํ ํ์ ๋ค์ ์๋์ ๊ฐ์ ํํ๋ก ๊ฐ์ ์ฐธ์กฐํ๊ณ ์๋ค. ์ค์ ๊ฐ์ฒด ๋ด ํ๋กํผํฐ๋ค์ด ๋ด๊ธด ์ฃผ์ ๊ฐ๋ค์ ๋ฐ์ดํฐ๋ก ๊ฐ๊ณ ์๋ ์ฃผ์ ๊ฐ!.. ์ ๋ณต์ฌํด์ ์ฐธ์กฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐธ์กฐํ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. 1. obj1์ ์ํ ๋ณ๋์ ๋ฐ์ดํฐ ์์ญ ์์ ํ๋กํผํฐ๋ค์ ๋ ๊ทธ ์์์ ๊ฐ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ ์๋ค. (์์ ์ฃผ์ 7103~7104 ๋ถ๋ถ) 2. ๋ฐ์ดํฐ ์์ญ ์์ ํ๋กํผํฐ๋ค์ ์ฃผ์ ๊ฐ์ด ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ฐ๋๋ค. 3. obj1์ 2์ ์ฃผ์ ๊ฐ์ ์ฐธ์กฐํ๋ค. ๊ฒฐ๊ตญ ๊ธฐ๋ณธํ๊ณผ์ ์ฐจ์ด๋ ๊ธฐ๋ณธํ์ ๊ฐ์ ๊ฐ๋ฆฌํค๋ ์ฃผ..
๊ธฐ์ด ํ๋ก์ ํธ๋ฅผ ๋ง์น๋ฉฐ ์์ฃผ ์ด์ฌํ ๋ฌ๋ฆฐ ๊ธฐ์ด ํ๋ก์ ํธ๊ฐ ๋์ด ๋ฌ๋ค!.. ํผ๊ณค๊ณผ ์คํธ๋ ์ค๋ก ์ธํด ์ธํ์ผ์ ์ป๊ณ ๋ง์์ง๋ง.. ๐ฅบ ์ง๋ ํ๋ก์ ํธ ํ๊ณ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ๊ณํ์ ์ด๊ณ ์์ฑ๋ ๋์ ํ๋ก์ ํธ๋ฅผ ๋ฐํํด์ ๊ธฐ์๋ค. ๋ฏธ๋ ํ๋ก์ ํธ์ฒ๋ผ ํํฐ๋์ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก, ๋ ๊ฐ์ธ์ ์ผ๋ก ์ข์๋ ๋ถ๋ถ๊ณผ ์์ฌ์ด ๋ถ๋ถ์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ์์ฌ์ ๋ ๋ถ๋ถ ๋ค๋ก ๊ฐ๊ธฐ๊ฐ ์ ๋๋ ์ ์ด๋ฒ ํ๋ก์ ํธ์ ํน์ฑ์ SPA๋ก ๊ตฌํ์ ํ๊ธฐ ๋๋ฌธ์ hash URL์ ์ด์ฉํด์ผ๋ง ํ๋๋ฐ, ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ ๋ธ๋๋๋ณ ์ ๋ฐ > ๊ฐ ์ ๋ฐ๋ค์ ๋ชจ๋ ๋ฆฌ๋ทฐ > ๋ฆฌ๋ทฐ ์์ธํ์ด์ง๋ก ์ด์ด์ง๋ ๊ตฌ์กฐ์๊ธฐ ๋๋ฌธ์?.. ์ด๋ฒคํธ ํ๊ฒ์ผ๋ก ๊ฐ์ ์ง์ ํด์ ๋์ด๊ฐ ์๋ฐ์ ์์๋ค. ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์๊ฒ ์ง๋ง.. ๐ฅบ ์ง๊ธ์ ๋ชจ๋ฆ... ํ์ด์ด๋ฒ ์ด์ค ์๊ธ์ ์ฝ๊ธฐ ํ ๋น๋์ด ์ด๋ ๊ฒ ๋นจ๋ฆฌ ์ฑ..
Uncaught FirebaseError: The query requires an index. You can create it here: ํ์ด์ด๋ฒ ์ด์ค๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ๋์ค ๋ง๋ ์๋ฌ!.. ์ง๊ธ๊น์ง๋ DB์ ์๋ ๋ชจ๋ ๋๊ธ์ ๊ฐ์ ธ์์ ๋ ๋๋ง ํด์ฃผ๊ณ ์์๋๋ฐ, ๊ฐ ๋ฆฌ๋ทฐ์๋ง ์์ฑํ ๋๊ธ์ ๋ถ๋ฌ์ค๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ง๋ค๊ฐ ๋ง๋ฌ๋ค. ์์ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ฉด ์ธ๋ฑ์ค(์์ธ)๋ฅผ ์์ฑํด์ผ ํ๋ค๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๊ณ ์๋ค. ์๋ ์ฟผ๋ฆฌ๋ฌธ ๋ณด๋ฉด where์ orderBy๋ฅผ ํจ๊ป ์ฐ๊ณ ์๋๋ฐ ๋ณตํฉ ์ฟผ๋ฆฌ์ฌ์ ๊ทธ๋ฐ์ง ์ ๋ถ๋ถ์ ์์ธ์ด ํ์ํ ๊ฒ ๊ฐ๋ค. ํด๊ฒฐ ํ์ด์ด๋ฒ ์ด์ค ์ฝ์์์ firestore์ ๋ค์ด์ค๋ฉด ํญ์ ์์ธ์ด๋ผ๋ ๊ฒ์ด ์๋ค. ์์ธ ์ถ๊ฐ๋ฅผ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ๋ณตํฉ ์์ธ์ ๋ง๋ค ์ ์๋๋ฐ, ์ ์ฉํ ์ปฌ๋ ์ ๊ณผ ํ์ํ ํ๋๋ค์..
Today, What I learned? ์ด๋๋ง ํ๋ก์ ํธ๊ฐ ์คํ๋ฐ ์ ๋ ์๋ค. ๐ ๋์ ๋ด๋น ๊ธฐ๋ฅ์ ์ผ์ถ ๋ง๋ฌด๋ฆฌ ํ ๋ !... ์ค๋์ ํ์ด์ด๋ฒ ์ด์ค์ DB์์ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํด์ฃผ๋ ํจ์์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค ํ๋ค. ์ฝ์ง์ ๊ฝค ๋ง์ด ํ๊ธฐ๋ ํจ ใ (2์๊ฐ๊ฐ๋..) getCountFromServer getCountFromServer ๋ผ๋ ํ์ด์ด๋ฒ ์ด์ค API๊ฐ ์๋ค. ์ด ๋ฉ์๋๋ ์ค๋ ์ท์ ์ฐ์ด์ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ํจ์์ด๊ณ , ํ์ฌ ๋ฐฑ์๋ ์๋ฒ์์ ์ง์ ์ ์ธ ์๋ต์ ํตํด์๋ง ๋์ํ๋ ํจ์๋ค. ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌ๋ํ๋ค. const coll = collection(db, "cities"); const query_ = query(coll, where('state', '==', 'CA')); const sn..
Comment