์์ ๋ฐ์ดํฐ๋ฅผ firestore์์ ๋ฐ์์๋ค. ์์ state์ ์ ์ฅ์ ํด์ผํ๋ค. ์ด๊น์์ด ์๊ธฐ๋ ์๋ฌ useState์ ๋ฌด์จ ํ์
์ธ์ง ์ฃผ์ง ์๊ณ ๋ฐฐ์ด์ด๋ผ๋ ๊ฒ๋ง ์๋ ค์คฌ์ผ๋ ์์ ๊ฐ์ ์๋ฌ๊ฐ ์๊ธด๋ค. ์ด ์น๊ตฌ๋ค๋ never ํ์
์ด ์๋๋ผ๋ฉด์ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ฟ๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋๋ค ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค. ํ๋๋ฅผ ํด๊ฒฐํ๋คํด๋ ํ๋๋ง ํด๊ฒฐ๋๊ณ ๋๋จธ์ง๋ ํด๊ฒฐ๋์ง ์์๋ค. ์๊ฐ์ด ํด์ค๋ค๋ฉด ๋ง์ฐฌ๊ฐ์ง๋ก title,spentTime,progress๊ฐ {id:string}์ด ์๋๋ผ๊ณ ํ๋๋ฐ ์ด ๋ถ๋ถ์ ์ ์ด๋ ๊ฒ ๊ฒฝ๊ณ ๊ฐ ๋์ค๋์ง ์ดํด๊ฐ ์๋๋ค. ํด๊ฒฐ๋๋ค๋ฉด ๋ค์ ํฌ์คํ
ํด์ผ๊ฒ ๋ค.
TIL
enum Alphabet{ A, B, C, D, } console.log(Alphabet.A) // 0 console.log(Alphabet.B) // 1 console.log(Alphabet.C) // 2 console.log(Alphabet.D) // 3 ์ด๊ฒ ๋์ด๋ค ใ
ํ์
์คํฌ๋ฆฝํธ ๊ธฐ๋ณธํ ์ข
๋ฅ ํ์
๋ฌธ์์ด string ์ซ์ํ number ๋ถ๋ฆฐํ boolean undefined undefined null null ๋ฐฐ์ด๊ณผ ํํ const cart: string[] = []; cart.push('c001'); cart.push('c002'); // ๋ฐฐ์ด์ ๋ฐฐ์ด const carts: string[][] = [ ['c001', 'c002'], ['c003'], ]; // ํํ let mySize: [number, number, string] = [175, 30, 'L']; ๊ฐ์ฒด ํ์
let product: { id: string; name: string; price: number; membersOnly?: boolean; // ํ์๊ฐ ์๋ ํ๋กํผํฐ sizes: string[]..
์ปดํฌ๋ํธ๋ก ๋๋ ๋ ์ปดํฌ๋ํธ์ ์คํ์ผ๋ง์ ์ ์ฉํด์ผ ํ ๋ ์ปดํฌ๋ํธ ์์ staticํ๊ฒ ์คํ์ผ์ ์ถ๊ฐํ๊ธฐ ๋ณด๋ค๋ ์ ๊ฐ์ ๋ฐฉ์์ ์ด์ฉํ๋ ๊ฒ์ ์๊ฐ์ ํ๋ค. ํ์
์์๋ ์ด๋ฐ ๋ฐฉ์์ ์ฐ๋? ์ด๋ค ๋ฐฉ๋ฒ์ ์ธ๊น? [๊ธ์์ ] ์ฝ๋๋ฅผ ํผ๋๋ฐฑ์ ๋ฐ์๋ค. ์ด ์ฝ๋๋ ์ ์๊ฐํ๊ณ ๋ง๋ ์ฝ๋๋ผ๊ณ ํ์
จ๋ค. ์๋ฌด๋๋ ์ปดํฌ๋ํธ ์์ฒด๋ staticํ ์คํ์ผ์ด ํฌํจ๋์ด ์๋ค๋ฉด ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ผ์๊ฒฝ๋ก๊ฐ url ์ฃผ์๊ฐ ๋๋ ๊ธฐ๋ฅ pages์ ์์ ๊ฐ์ด ๊ตฌ์ฑ products/1 ์ ๊ฐ์ด ์ ๊ทผ ๊ฐ๋ฅ Link๋ ํด๋ฆญํ์ ๋ ์ปดํฌ๋ํธ๊ฐ '์ค๋น'๋๋ฉด ํ์ด์ง๊ฐ ๋์ด๊ฐ aํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ง๋ฅผ ์ ๋ถ ๋ค ์๋ก ๋ฐ์์ด. Link๋ก ์ธ๋ถ ๋งํฌ ์ฐ๊ฒฐํ ๋๋ aํ๊ทธ ์ฒ๋ผ ๋์ํจ
์์๊ฐ์ด props๋ฅผ state๋ก ์ฐ๋ฉด rating์ด ๋ฐ๋์ด์ผ ํ๋ ๊ฑฐ ์๋๊ฐ? ํ์ง๋ง ๋ฐ๋์ง ์๋๋ค. 10๋ถ์ ๋ ๊ณ ๋ฏผํ๋ค. useEffect๋ฅผ ์จ์ ํด๊ฒฐ์ ํ๊ธด ํ๋ค๋ง ๋ณธ ์ฝ๋์ ๊ฐ์์์ ์ด๋ ๊ฒ ํ์ง ์์๋จ ๋ง์ด์ง... useEffect ์์จ๋ ๋จ!! prop์ 1๊ฐ ์ถ๊ฐํ๋ฉด ํด๊ฒฐ๋ ๋ฌธ์ ! prop์ value๋ฅผ ๋ด๋ ค์ฃผ๋ ๊ฑธ๋ก ์ถ๊ฐํด๋ ๋์ง๋ง ์๋์ ๊ฐ์ด ํธ๋ค๋ฌ ํจ์๋ฅผ ๋ด๋ ค์ฃผ๋ ๊ฒ๋ ๊ฐ๋ฅ ์์์ ์ผ๋ก ์๊ฐํ์ด์ผ ํ๋๋ฐ ๋๋ฌด ๊ธฐ์ต๊ณผ ๊ฐ์ ์์กดํ๋ค. prop์ผ๋ก ๋ฐ๊ณ ๋ด๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด ๋๋ ๋ฌธ์ ์๋๋ฐ.