header-img
Info :
FRONTEND/React 60
list_img
React ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•
2023.04.15
๋Œ€์ถฉ ์–ผ๋ ˆ๋ฒŒ๋ ˆ ๊น”์•„์„œ ๋ฆฌ์•กํŠธ ๊ตฌ์ถ•ํ•ด์˜ค๋˜ ๋‚˜.. ๋ฆฌ์•กํŠธ ํ™˜๊ฒฝ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ตฌ์ถ•ํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ด๊ฑฐ ํฌ์ŠคํŒ…์— ๋†“์น  ์ˆ˜ ์—†๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด ์˜ค๋Š˜์˜ ๊ธ€ ๊ฑด๋•์ง€๋ฅผ ํ•˜๋‚˜ ์žก๊ฒŒ ๋˜์—ˆ๋‹ค. 1. node.js ์„ค์น˜ node.js ์„ค์น˜ ํŽ˜์ด์ง€ LTS ๋ฒ„์ „์„ ์„ค์น˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋ฌด์ž‘์ • ๋‹ค์Œ(NEXT) ์„ ๋ˆŒ๋Ÿฌ ์„ค์น˜ํ•˜์—ฌ๋„ ๋ฌด๊ด€ํ•˜๋‹ค. ํ•˜๋‚˜ ์‹ ๊ฒฝ ์“ธ๋งŒํ•œ ๋ถ€๋ถ„์€ ๋ฐ”๋กœ ์ด ๋ถ€๋ถ„์ธ๋ฐ.. automatically install the necessary tools. Note that this will also install Chocolatey. The script will pop-up in a new window after the installation completes Chocolatey ๋ฐ ์ถ”๊ฐ€ ์„ค์น˜ ๋„๊ตฌ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ฒŒ ํ• ๊ฑด์ง€ ๋ง๊ฑด..
list_img
[React] Recoil ๊ณผ Recoil-Persist
2023.04.13
Recoil ๋„์ž… ์—ญ์‚ฌ์˜ ์‹œ์ž‘ ๋กœ๊ทธ์ธ ๋ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ „์—ญ ์ƒํƒœ๊ด€๋ฆฌ ๊ธฐ์ˆ ๋กœ Recoil์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. Recoil ๋ฆฌ์ฝ”์ผ(Recoil) ์€ API, ์˜๋ฏธ, ๋™์ž‘์„ ์ตœ๋Œ€ํ•œ ๋ฆฌ์•กํŠธ์Šค๋Ÿฝ๊ฒŒ ์œ ์ง€ํ•˜๋ฉฐ ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ณ ์ž ํŽ˜์ด์Šค๋ถ์—์„œ ๋งŒ๋“  ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Recoil ํ•ต์‹ฌ๊ฐœ๋… Atom : ํ•˜๋‚˜์˜ ์ž‘์€ ์ƒํƒœ. ์ผ๋ฐ˜์ ์ธ ๋ฆฌ์•กํŠธ์˜ ์ƒํƒœ๋กœ ์ปดํฌ๋„ŒํŠธ๋“ค ๊ตฌ๋…์ด ๊ฐ€๋Šฅ useRecoilState : atom ๊ฐ’์„ ์ฝ๊ณ  update ํ•˜๋Š” hook. React Hook์˜ UseState ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ด€๋ฆฌ์—์„œ State์™€ SetState๋ฅผ ํ•ฉ์นœ ๊ฒƒ๊ณผ ๊ฐ™์Œ. useRecoilValue : setter์„ ์ œ์™ธํ•œ atom์˜ ๊ฐ’๋งŒ ์ œ๊ณต. ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ด€๋ฆฌ์—์„œ state์˜ ์—ญํ•  useSetRe..
list_img
[React] useEffect ์™€ useLayoutEffect ์˜ ์ฐจ์ด
2023.04.13
UseEffect Hook useEffect ๋Š” ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Hook ์œผ๋กœ ํด๋ž˜์Šคํ˜• ์ปดํฌ๋„ŒํŠธ์˜ ๋งˆ์šดํŠธ ๋‹จ๊ณ„์ธ componentDidMount + ์—…๋ฐ์ดํŠธ ๋‹จ๊ณ„์ธ componentDidUpdate + ์–ธ๋งˆ์šดํŠธ ๋‹จ๊ณ„์ธ componentWillUnmount ์˜ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ํ›…์ด๋‹ค. componentDidMount+componentDidUpdate์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋“ค์€ useEffect์— ์ „๋‹ฌ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด์— ์ž‘์„ฑํ•˜๋ฉด ๋˜๋ฉฐ, componentWillUnmount์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋“ค์€ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ returnํ•˜๊ฒŒ๋” ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. ๊ธ€์“ด์ด๊ฐ€ ์ž‘์„ฑํ•œ UseEffect์— ๊ด€ํ•œ ๊ธ€(1) ์—ฌ๊ธฐ์— ๋” ๊ฐ„๋‹จํ•œ ์„ค๋ช…์ด ์กฐ๊ธˆ ์ถ”๊ฐ€๋˜์–ด ์žˆ๊ธด ํ•˜๋‹ค. ์•„๋ฌดํŠผ ์ด๋ ‡๊ฒŒ ์–ด๋–ค ํŠน์ • ..
list_img
[React/js] ๋‚ ์งœ(์›”,์ผ)์„ 01~31์˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•ด๋ณด์ž.
2023.04.13
์™œ? ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•  ๋•Œ ์–ด๋–ค ๋ณ€์ˆ˜์— Date ๋ฅผ ์„ ์–ธํ•ด๋‘” ๋’ค getFullYear, getMonth, getDate ๋“ฑ์„ ์ด์šฉํ•˜์—ฌ ์ž˜๋ผ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๊ณ ๋Š” ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด Month๋Š” 1~12์˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ์ด ๋˜๊ณ , Date์˜ ๊ฒฝ์šฐ์—๋Š” 1~31์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๊ฒŒ ๋œ๋‹ค. ๋ณดํ†ต ์กฐํšŒ ์กฐ๊ฑด์„ ์„ค์ •ํ•  ๋•Œ์—๋Š” yyyy-MM-dd ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๋ง์ด๋‹ค.. ๊ธฐ์กด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์‚ฌํ•ญ์€ ์•„๋‹Œ๋ฐ ์ด๋Ÿฐ ๋กœ๊ทธ๊ฐ€ ์ž๊พธ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. The specified value "2023-1-3" does not confirm to the required format, "yyyy-MM-dd" ๋Œ€์ถฉ ๋…ธ๋ž€์ƒ‰์ธ ๊ฒƒ์„ ๋ณด์žํ•˜๋‹ˆ ์•Œ์•„์„œ ๋ณ€ํ™˜ํ•ด์„œ ์ ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฑด๊ฐ€ ์‹ถ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋ˆˆ์— ๊ฑฐ์Šฌ๋ฆฌ๋ฏ€๋กœ ํ•ด๊ฒฐํ•ด๋ณด๋„๋ก ํ•˜์ž. ..
list_img
[React] ์ฐจํŠธ(chart) ๋งŒ๋“ค๊ธฐ
2023.04.13
์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค. 1. ๊ฐœ์š” ๋ฆฌ์•กํŠธ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๊ฝค๋‚˜ ๋งŽ์€๋ฐ ๋‚˜๋Š” ๋”ฑ ๊ธฐ๋ณธ ํ˜•ํƒœ์˜ ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ๊ฐ€ ํ•„์š”ํ•˜์—ฌ ์ œ์ผ ๋ณด๊ธฐ์— ์ฝ”๋“œ๊ฐ€ ์‰ฌ์›Œ๋ณด์ด๋Š” Recharts ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฑ„ํƒํ•˜์˜€๋‹ค. ํ˜น์‹œ๋‚˜ ๋ณต์žกํ•œ ํ˜•ํƒœ์˜ ์ฐจํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด.. Nivo.rocks, React Vis, Apexcharts, Victory, Chartjs, Highcharts ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ๊ตฌ๊ฒฝํ•ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋‚˜๋Š” ์ฐธ๊ณ ๋กœ ๋ฆฌ์•กํŠธ ๊ทธ๋ž˜ํ”„/์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ์Œ ์ด๋ผ๋Š” ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณจ๋ž๋‹ค. ๋˜‘๊ฐ™์€ ์ฐจํŠธ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ผ ํ•˜๋”๋ผ๋„, ๊ฐ๊ฐ ๋‹ค๋ฅธ ํŠน์ง•์ด ์žˆ์œผ๋‹ˆ ์ด๋Ÿฐ ๊ฒƒ๋„ ๊ณ ๋ คํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค. 2. ์‚ฌ์šฉ๋ฒ• 1. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ $ npm install r..
list_img
[React] FETCH ์™€ AXIOS ์˜ ์ฐจ์ด์  1
2023.04.13
What is difference between Fetch and Axios ? JS์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” HTTP ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ํ†ต์‹  ๋ฐฉ๋ฒ•์ธ Axios ์™€ Fetch ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. Axios/Fetch ์ƒ๊ฒจ๋‚œ ๋ฐฐ๊ฒฝ ๊ธฐ์กด์˜ ์›น์—์„œ๋Š” ์–ด๋–ค ์ •๋ณด๋“ค์„ ๋น„๋™๊ธฐ๋กœ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด์„œ XHR(XML HTTP Request) ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์•ผ๋งŒ ํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.. ๊ทผ๋ฐ XHR์€ ๋˜๊ฒŒ ๋ถˆ์นœ์ ˆํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์งธ๋กœ ์ค˜๋ฒ„๋ฆฐ๋‹ค๋˜์ง€..) ์š”์ฒญ์˜ ์ƒํƒœ๋‚˜ ๋ณ€๊ฒฝ์„ ๊ณ„์† ๋ณด๊ณ  ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€๋กœ ๋“ฑ๋กํ•ด์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ๋“ค์„ ๋‹ค์‹œ ๋ฐ›์•„์•ผ ํ•˜๊ณ .. ์š”์ฒญ์˜ ์„ฑ๊ณต/์‹คํŒจ/์ƒํƒœ๋ณ€๊ฒฝ ๋“ฑ์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๋„ ๋ณต์žกํ–ˆ๋‹ค. → ์ƒˆ๋กœ์šด url์„ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๊ทธ๋ ค์•ผ ํ•˜๋Š” ๋“ฑ์˜ ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ..
list_img
[React] UseEffect ์•ˆ์—์„œ ์ฝ˜์†”์„ ์ฐ์œผ๋ฉด ์™œ ๋‘๋ฒˆ ์ฐํžˆ๋Š”๊ฑธ๊นŒ? (๋‘๋ฒˆ ๋ Œ๋”๋ง)
2023.04.13
0. about UseEffect UseEffect ํ•จ์ˆ˜ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ๋งˆ๋‹ค ํŠน์ • ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” Hook component์˜ mount ์ƒํƒœ๊ฐ€ ๋ฐ”๋€” ๋•Œ, ํ˜น์€ ๋‚ด์šฉ์ด update ๋˜์—ˆ์„ ๋•Œ, ํŠน์ • ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์‚ฌ์šฉ๋ฒ• ์€ import React, {useEffect} from 'react' ์ด๋ ‡๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ useEffect(()=>{ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•˜๊ณ  ์‹ถ์€ ์ผ },[๊ธฐ์ค€ ๊ฐ’]) ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ™”๋ฉด์— ๊ฐ€์žฅ ์ฒ˜์Œ ๋ Œ๋”๋ง ๋  ๋•Œ ๋”ฑ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š” ๊ธฐ์ค€๊ฐ’์ด ๋“ค์–ด๊ฐ€๋Š” [] ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ๋นˆ ๋ฐฐ์—ด๋กœ ๋‘๋ฉด ๋œ๋‹ค. 1. ๋ฌธ์ œ ์ƒํ™ฉ useEffect(()=>{},[]) ์–˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ์ด๋ก ์ƒ ๋”ฑ! ํ•œ๋ฒˆ๋งŒ ๋ถˆ๋Ÿฌ์™€์•ผ ํ•˜๋Š”๋ฐ...
list_img
[html] ๊ธฐ๋ณธ SEO / [react] SEO pre-rendering ๋ฐฉ์‹์œผ๋กœ ๋จน์ด๊ธฐ
2023.04.12
์˜ค๋Š˜์€ HTML์˜ ๊ธฐ๋ณธ SEO ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์‚ฌ์œ ๋Š” ๋ช‡์ผ ์ „์˜ ๋‚ด๊ฐ€ TITLE ๋„ ์•ˆ ๋ฐ”๊พธ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฆด๋ป”ํ•œ ์ ์ด ์žˆ์–ด์„œ ๋‚˜๋Š” HTML์— H๋„ ๋ชจ๋ฅด๋Š”๊ตฌ๋‚˜ ๋ผ๊ณ  ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€์ฐธ์‚ฌ๋Š” ๋ˆˆ์น˜๊ป ๋ง‰์•„๋ƒˆ์ง€๋งŒ.. ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์•„๊ธฐ ์›น์•ฑ ๐Ÿ‘ถ์€ ๋ณด๋‹ค์‹ถ์ด ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด๋„ ์•„๋ฌด๋Ÿฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค. ๋…ธ์…˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ•œ์ฐธ ๋กœ๋”ฉ์ด ๊ฑธ๋ฆฌ๋‹ค๊ฐ€ - ๊ทธ๋ƒฅ ๋งํฌ ์ด๋ฆ„๋งŒ ๊ฑธ์–ด์ค€๋‹ค ๐Ÿ˜ฅ ๋Œ€๊ฐ• ์ด๋Ÿฐ ๋Š๋‚Œ์ด๋‹ค.. ์ฝฉ์ง€์•ผ.. ๋‚œ ๋”์ด์ƒ ์•ˆ๋˜๊ฐœ์จ ๐Ÿธ ์ด ์ด์œ ์— ๋Œ€ํ•ด์„œ๋Š” ์‹ฌ๊ฐํ•œ ๊ฑด ์•„๋‹ˆ๊ณ  ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ HTML ๊ธฐ๋ณธ SEO์— ๋Œ€ํ•ด ์•Œ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๐Ÿต๐Ÿต๐Ÿต ์šฐ์„  0. SEO ๋ž€? Search Engine Optimization์˜ ์•ฝ์ž๋กœ, ๊ฒ€์ƒ‰์—”์ง„์ตœ์ ํ™” ๋ฅผ ์˜๋ฏธํ•˜๋Š”๋ฐ, ์›น ์‚ฌ์ดํŠธ์™€ ์›นํŽ˜์ด์ง€๋ฅผ ๊ฒ€์ƒ‰..
list_img
[REACT] JSON ์„œ๋ฒ„ ์ƒ์„ฑ ํ›„ ๋ฐ์ดํ„ฐ ๋ฐ›์•„์˜ค๊ธฐ
2023.04.12
์™„์„ฑ๋ณธ ์‚ฌ์ง„... ๋ ›์ธ ๊ณ  JSON-SERVER ? ๋น„๊ต์  ๊ฐ„ํŽธํ•˜๊ฒŒ ์•„์ฃผ ์งง์€ ์‹œ๊ฐ„์„ ๋“ค์—ฌ REST API๋ฅผ ๊ตฌ์ถ•ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ์ฃผ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜, ๊ณต๋ถ€ํ•˜๊ณ  ์‹ค์Šตํ•  ๋•Œ.. ์ด์šฉํ•˜๋Š” ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ๊ตฟ์ธ ๋„๊ตฌ ! REST API ์„œ๋ฒ„์˜ ์™ ๋งŒํ•œ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์„ ๋Œ€๋ถ€๋ถ„ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”๋ฐ ํ”„๋กœ๋•์…˜์šฉ์œผ๋กœ๋Š” ๋ถ€์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๋‚˜๋Š” ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ์ด๋‹ˆ๊นŒ ์•„๋ฌดํŠผ ๋ ›์ธ ๊ณ  ~! ๐Ÿ”Œ JSON SERVER Setup ๋‚˜๋Š” npm์„ ์‚ฌ์šฉํ•ด์„œ json-server๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ๋ถ™์ด๊ณ  ์‹ถ์€ react ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋” ์ตœ์ƒ๋‹จ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ด์–ด์„œ // ์„œ๋ฒ„ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค. ๋‚˜๋Š” ์„ฑ์žฅ์šฉ์ด๋ผ ์ด๋ฆ„์„ ์ด๋ ‡๊ฒŒ ์ง€์—ˆ๋‹ค. $ mkdir server-grow // ๋งŒ๋“  ์„œ๋ฒ„ ํด๋”๋กœ ์ด๋™ $ cd ./server-gro..
list_img
[React] input - sql injection ๋ฐฉ์ง€
2023.04.12
SQL INJECTION ์ด๋ž€? ์‚ฌ์šฉ์ž๊ฐ€ ์ •์ƒ์ ์ธ ์ž…๋ ฅ์ด ์•„๋‹Œ ๋น„์ •์ƒ์ ์ธ ์ž„์˜์˜ SQL ๋ฌธ์„ ์ž…๋ ฅํ•ด์„œ DB์— ๋น„์ •์ƒ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ.. ๋น„์ •์ƒ์ ์ด์ง€๋งŒ ์ปดํ“จํ„ฐ๋Š” ๋น„์ •์ƒ์ธ๊ฑธ ๋ชฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์ค˜๋ฒ„๋ฆฐ๋‹ค (๋ฌธ์ œ) SQL INJECTION ๋ณด์•ˆ ๋ฐฉ๋ฒ• ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ (์ง€๊ธˆ ํ• ๊ฑฐ์ž„) Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ - ํ•œ์ค„๋กœ ์กฐํšŒ ๋•Œ๋ ค๋ฒ„๋ฆฌ์ง€๋ง๊ณ  ๋‚˜๋ˆ ์„œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ๋ ๋งŒํ•œ ์• ๋“ค์€ ๋ณ€์ˆ˜๋‚˜ ์ด๋Ÿฐ๋ฐ ์ €์žฅ๋†“๊ณ  ๋ฝ€๊ฐœ์„œ ์“ฐ๋ž€ ์†Œ๋ฆฌ Error Message ๋…ธ์ถœ ๊ธˆ์ง€ - ๋””ํ…Œ์ผ ํ•œ ๊ฒƒ๋“ค์€ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ๊ฐœ๋ฐœ์ž๋งŒ ๋ณด์ž... ๋ฐฉํ™”๋ฒฝ ์‚ฌ์šฉ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• ๋‚˜๋Š” ์•ž์—์„œ ๋งํ•œ ๋ณด์•ˆ ๋ฐฉ๋ฒ•๋“ค ์ค‘ 1๋ฒˆ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ”ํžˆ ๋งํ•˜๋Š” ์ •๊ทœ์‹์„ ์‚ฌ์šฉ ํ•œ ๊ฒƒ์ธ๋ฐ.. ์ •๊ทœ์‹(Regular Expressions)๋ž€..
list_img
[React] ํ™•์ธ์„ ๋ฐ›์ž (with. window.confirm)
2023.04.12
๐Ÿต ํ˜„์žฌ ์ƒํ™ฉ ๊ฒŒ์‹œ๊ธ€ delete ํ•˜๋ฉด ๋ฐ”๋กœ ์‚ญ์ œ๋˜์–ด๋ฒ„๋ฆผ ๋กœ๊ทธ์ธํ•œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์ž๋ฅผ ์ธ์‹ํ•ด์„œ ์ˆ˜์ •/์‚ญ์ œ ๋ฒ„ํŠผ์„ ์—ด์–ด์ฃผ๊ณ  ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‚ญ์ œ ํ• ๊นŒ๋ง๊นŒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์†๊ฐ€๋ฝ์ด ๋นจ๋ผ๋ฒ„๋ ค์„œ ์—ด์‹ฌํžˆ ์“ด ๊ธ€์„ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค๋ฉด... ํ˜น์€ ์ง€์šฐ์ง€ ์•Š์•„์•ผํ•  ๊ธ€์„ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค๋ฉด... ์‚ฌ์šฉ์ž๊ฐ€ ๊ฝค ์Šฌํ”„๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๋ฌผ ํ•œ๋ฐฉ์šธ๋„ ์•„๊ปด์จ์•ผ ํ•˜๋Š” ์ด ์„ธ์ƒ์—์„œ ์‚ฌ์šฉ์ž์˜ ๋ˆˆ๋ฌผ์„ ํ—›๋˜์ด ์“ฐ๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ๋ ›์ธ ๊ณ  ์ˆ˜์ • ๊ฐ„๋‹จํ•˜๊ฒŒ confirm ํ•œ๋ฒˆ ๋” ๋ฐ›๊ณ  ํ™•์ธ ๋ˆ„๋ฅด๋ฉด ๊ทธ๋•Œ axios ์‹ ํ˜ธ๋ฅผ ์ฃผ๋„๋ก ํ•˜์ž. C#์— messagebox ๊ฐ€ ์žˆ๋“ฏ, react์—๋Š” window.confirm์ด ์žˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค. window.confirm("๋„์šฐ๊ณ  ์‹ถ์€ ๋ฉ”์„ธ์ง€"); ๋‹ต๋ณ€ ๊ฐ’์€ ํ™•์ธ: true ์ทจ์†Œ: false ๋‹ต๋ณ€ ๊ฐ’๋„ ๊น”๋”ํ•˜๊ฒŒ..
list_img
[React] ๋ฌดํ•œ ์ž๋™ ์Šฌ๋ผ์ด๋“œ ๋งŒ๋“ค๊ธฐ carousel ํฌ๋กœ์…ธ
2023.04.12
์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ ์› ์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ ํˆฌ UI๋Š” ๊ตณ์ด ์ด์˜๊ฒŒ ๋งŒ๋“ค ์ƒ๊ฐ์ด ์—†์—ˆ๊ณ  ์›ํ•˜๋˜ ๊ธฐ๋Šฅ๋งŒ ๋งํ•ด๋ณด์ž๋ฉด.. ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ๋Šฅ ์„ค๋ช… ์‚ฌ์ง„ ๊ฐฏ์ˆ˜์— ์ œํ•œ ์•ˆ๋‘๊ณ  ์‚ฌ์ง„์„ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์Œ -> ์‚ฌ์‹ค ๋ช‡๊ฐœ๊ฐ€ ๋ ์ง€ ๋ชจ๋ฆ„ ์‚ฌ์ง„์ด๋™ 1.1. ๊ธฐ๋ณธ์€ ์‚ฌ์ง„์ด ์ž๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ํ• ๊ฑด๋ฐ 1.2. ์›ํ•˜๋ฉด ์‚ฌ์ง„์„ ์ง์ ‘ ๋„˜๊ธธ์ˆ˜๋„ ์žˆ์–ด์•ผ ํ•œ๋‹ค ํƒญ ์ด๋™ํ•˜๋ฉด ์ง€์ •ํ•ด๋‘” ์‚ฌ์ง„ ๋ฐ”๋€Œ์–ด์•ผ ํ•œ๋‹ค ๋ณ„๊ฑฐ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋งˆ์ง€๋ง‰๊ป˜ ์ฒ˜์Œ์„ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ๊ฑฐ๋Š” ์–‘ ์˜†์— ์‚ฌ์ง„ ๋‘์žฅ๋„ ์งœ์ž”ํ•˜๊ณ  ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ตฌํ˜„ํ•ด๋‘๊ณ ๋„ ์ด๊ฒŒ ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ ๊ฒŒ ๋งž๋‚˜ ์‹ถ์€ ๋Š๋‚Œ์ด๋‹ค. ๊ตฌํ˜„ ๊ธฐ์ˆ ๊ณผ ๊ด€๋ จ๋œ ์„ค๋ช…์€ ์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ ์› ์—์„œ ์ •๋ง ์ƒ์„ธํ•˜๊ฒŒ ์ž˜ ๋‹ค๋ค„์ฃผ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋Š” ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค. ๐Ÿ˜‡ Code ์‚ฌ์ง„์€ /public/store_image ์— ..