๐Ÿ‘ฉ‍๐ŸŽค ํ”„๋ก ํŠธ์—”๋“œ

    ์ปดํฌ๋„ŒํŠธ ์ž˜ ๋งŒ๋“ค๊ธฐ: ๋ฐ์ดํ„ฐ ์ถ”์ƒํ™”ํ•˜๊ธฐ

    ํ† ์Šคใ…ฃSLASH 22 - Effective Component ์ง€์† ๊ฐ€๋Šฅํ•œ ์„ฑ์žฅ๊ณผ ์ปดํฌ๋„ŒํŠธ ์˜์ƒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ œํ’ˆ์€ ํ•ญ์ƒ ๋ฐ”๋€๋‹ค. ๋ณ€๊ฒฝ์‚ฌํ•ญ์€ ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค ์ข‹์€ ์ œํ’ˆ์„ ์œ„ํ•ด์„œ๋Š” ๋ณ€๊ฒฝ์€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค ๋ณ€๊ฒฝ์€ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•˜๊ธฐ Item์ด๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„๋งŒ ๋ณด๊ณ ๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€, ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ง€๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค. ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋„๋ก ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค๊ธฐ ์ปดํฌ๋„ŒํŠธ? ์ปดํฌ๋„ŒํŠธ๋Š” 3๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ–๋Š”๋‹ค. 1. ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค ์ปดํฌ๋„ŒํŠธ๋Š” ๋‘๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์™ธ๋ถ€์—์„œ ์ฃผ์ž… ๋ฐ›์€ ๋ฐ์ดํ„ฐ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ(์ƒํƒœ) 2. ์ปดํฌ๋„ŒํŠธ๋Š” UI๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 3. ์ปดํฌ๋„ŒํŠธ๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค. Headless ๊ธฐ๋ฐ˜..

    TS2339: Property 'reset' does not exist on type 'EventTarget'.

    form ์š”์†Œ์˜ reset ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. const handleFormSubmit = async (e: React.FormEvent) => { ... e.target.reset(); // TS2339: Property 'reset' does not exist on type 'EventTarget'. } TS2339: Property 'reset' does not exist on type 'EventTarget'. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1. ํƒ€์ž… ๋‹จ์–ธํ•˜๊ธฐ e.target์— as๋ฅผ ์‚ฌ์šฉํ•ด์„œ HTMLFormElement ํƒ€์ž…์„ ๋‹จ์–ธํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. (e.target as HTMLFormElement).reset(); const handleFormSubmit = async (e: R..

    Property 'Authorization' does not exist on type 'AxiosHeaders'

    ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ jwt๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— axios interceptor๋ฅผ ์ด์šฉํ•ด์„œ ํ† ํฐ์— ๋”ฐ๋ผ request ํ—ค๋” ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด interceptor๋ฅผ ์„ค์ •ํ•˜์˜€๋‹ค. axios.interceptors.request.use((request) => { request.headers ? (request.headers.Authorization = `Bearer ${token}`) : (request.headers = { Authorization: `Bearer ${token}` }); }); // ๋˜๋Š” axios.interceptors.request.use((request) => { if (request.headers) { request.headers.Authorization = `Be..

    [React] useState ์ดˆ๊ธฐ๊ฐ’์ด undefined์ด ๋˜๋Š” ์˜ค๋ฅ˜

    ๋ฌธ์ œ ์ƒํ™ฉ props๋กœ ์ „๋‹ฌํ•œ ๊ฐ’์„ state์˜ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ state ๊ฐ’์€ props๋กœ ์ „๋‹ฌ๋œ ๊ฐ’ ๋‹ค๋ฅด๊ฒŒ undefined๋กœ ์„ค์ •๋˜์—ˆ๋‹ค. ์›์ธ useState(initialValue)์—์„œ initialValue๋Š” ์ฒซ๋ฒˆ์งธ ๋ Œ๋”๋ง์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ ํ›„์—๋Š”, props๋กœ ์ „๋‹ฌ๋œ intialValue ๊ฐ’์ด ๋ณ€ํ•˜๋”๋ผ๋„ ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. props๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์žฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋‚˜์š”? ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ props๋กœ ์ „๋‹ฌํ•œ ๊ฒฝ์šฐ๋งŒ ์žฌ๋ Œ๋”๋ง์ด ์ผ์–ด๋‚œ๋‹ค. ์œ„์˜ ๊ฒฝ์šฐ๋Š” ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ state๋ฅผ ์ „๋‹ฌํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ Œ๋”๋ง์ด ๋‹ค์‹œ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1. useEffect useEffect ์‚ฌ์šฉํ•ด์„œ props๋กœ ์ „๋‹ฌ๋œ initialValue๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด set..

    [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 2 - react, typescript, eslint, prettier

    2022.12.29 - [react] - [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 1 - webpack, babel-loader [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 1 - webpack, babel-loader Webpack Webpack์€ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. Webpack์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. HTML, CSS, Javascript, ์ด๋ฏธ์ง€ ๋“ฑ์„ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ํŒŒ min-kyung.tistory.com ๊ธธ๊ณ  ํ—˜๋‚œํ•œ ์›นํŒฉ ์„ค์ •์˜ ๊ธธ.. react ์„ค์น˜ npm i react react-dom ์ด์ œ ๋Œ€๋žต์ ์ธ ์›นํŒฉ ์„ค์ •์„ ๋งˆ์น˜๊ณ  ๋ฆฌ์•กํŠธ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. typescript ์„ค์น˜ ๋ฐ ์„ค์ • ํŒŒ์ผ npm i -D ty..

    [React] Webpack์œผ๋กœ React ์‹œ์ž‘ํ•˜๊ธฐ 1 - webpack, babel-loader

    Webpack Webpack์€ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. Webpack์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. HTML, CSS, Javascript, ์ด๋ฏธ์ง€ ๋“ฑ์„ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋งํ•œ๋‹ค. ์˜์กด ๋ชจ๋“ˆ์ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง๋œ๋‹ค. React์™€ Webpack ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ Webpack ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ์ง์ ‘ ๊ตฌ์„ฑํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๊ทธ๋ƒฅ CRA๋ฅผ ์“ฐ๋ฉด ์•ˆ๋˜๋‚˜? ์›นํŒฉ ์„ค์ •์€ ์‚ฌ์‹ค ๊ท€์ฐฎ๊ณ  boilerplate๋ผ๊ณ  ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ ์ด๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” Create React App์ธ CRA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์—๋„ ์ตœ์†Œํ•œ์˜ ํˆด์ฒด์ธ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ CRA๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ๋‹ค..ใ…Ž ..