[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ์†”๋กœ ํ”„๋กœ์ ํŠธ - 3 (4๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ ์ž‘์—…..ing)

JiEunยท2023๋…„ 5์›” 16์ผ
0

โœ”๏ธ ์‹œ์ž‘

ํ—ค๋”, ํ‘ธํ„ฐ ์ž‘์—…์ด ๋๋‚˜๊ณ  ๋ฉ”์ธ ํ™”๋ฉด์„ ์ง„ํ–‰ํ–ˆ๋‹ค..
ํ•˜์ง€๋งŒ! ๋ฉ”์ธ ํ™”๋ฉด์„ ์ž‘์—…ํ•˜๋ ค๋ฉด ๊ฒฐ๊ตญ์—” ๊ฐ 4๊ฐœ์˜ ์ƒํ’ˆ์„ ์ž‘์—…ํ•ด์•ผํ•œ๋‹ค.
์ƒํ’ˆ๋งŒ ์žˆ๋Š”๊ฒŒ ์•„๋‹Œ ๊ฐ ํƒ€์ž… ๋งˆ๋‹ค ์Šคํƒ€์ผ์ด ๋‹ค๋ฅด๊ณ , ์ƒํ’ˆ ํด๋ฆญ์‹œ ๋ชจ๋‹ฌ์ฐฝ๋„ ๋‚˜์˜ค๊ณ , ๋ถ๋งˆํฌ ๋ฒ„ํŠผ๋„ ์กด์žฌํ•œ๋‹ค.


๐Ÿ“ ์ž‘์—… ํ˜„ํ™ฉ

โœ”๏ธ 4๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ ์ž‘์—…

์Œ... ์ž‘์—…ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ...
ํ•˜๊ธด ํ–ˆ๋Š”๋ฐ ๊ฒฐ๊ณผ๊ฐ€ ์—†๋‹ค..

ํ•ด๋‹น ์ž‘์—… ์˜์—ญ ๋‚˜์—๊ฒ ์•„์ง์€ ๋‚œ์ด๋„๊ฐ€ ๋†’์€๊ฑฐ ๊ฐ™๋‹คใ… 

๋ถ๋งˆํฌ ๊ธฐ๋Šฅ๊ณผ, ํ™”๋ฉด ํด๋ฆฌ ์‹œ ๋ชจ๋‹ฌ ์ฐฝ๋„ ๋‚˜์™€์•ผํ•˜๋Š” ์ ๊ณผ
๊ฐ ํƒ€์ž… ๋งˆ๋‹ค ์Šคํƒ€์ผ์ด ๋‹ค๋ฅธ์ ์ด ์žˆ์–ด ์ง„์งœ ํ•˜๋ฃจ ์ข…์ผ ์ž‘์—… ํ–ˆ์ง€๋งŒ ๋๋‚ด์ง€ ๋ชปํ–ˆ๋‹ค.

๋ฐ”๋กœ API๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ณด๋‹ค๋Š”
๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ์˜ ์กฐ๊ฑด์— ๋งž์ถฐ ์ž‘์—…์„ ํ–ˆ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์–ด์„œ ์ž‘์—…ํ•ด ์ฃผ์—ˆ๋‹ค.

์ƒํ’ˆ์˜ ๊ฒฝ์šฐ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋งŽ์•„ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋นผ์ฃผ์—ˆ๋‹ค.
๋ณด์—ฌ์ฃผ๋Š” ๋‚ด์šฉ์ด ๊ฐ type๋งˆ๋‹ค ๋‹ฌ๋ผ์„œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด type์— ๋”ฐ๋ผ ์Šคํƒ€์ผ๋ง์„ ๋‹ค๋ฅด๊ฒŒ ํ•ด์ฃผ์—ˆ๋‹ค.

<div className="right-area">
	{/* Category, Exhibition */}
	{!productItem.discountPercentage && null}
	{/* Brand */}
	{productItem.type !== "Brand" || <strong>๊ด€์‹ฌ๊ณ ๊ฐ์ˆ˜</strong>}
	{/* Product*/}
	{productItem.type !== "Product" || <strong className="product">{`${productItem.discountPercentage}%`}</strong>}
	<span>{!productItem.price ? numComma(productItem.follower) :`${numComma(productItem.price)}์›`}</span>
</div>

์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์ง„์งœ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•œ ๊ฑฐ ๊ฐ™๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๊ฐ ์ƒํ’ˆ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์ค€ ๋ชจ์Šต์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‹ค์Œ ๋ฌธ์ œ๋Š” ๋ชจ๋‹ฌ๊ณผ ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ์ด๋‹ค...

์ผ๋‹จ ๋‘˜ ์ค‘ ๋น„๊ต ํ–ˆ์„ ๋•Œ ๋ชจ๋‹ฌ ์ฐฝ์ด ๋” ์‰ฌ์šธ ๊ฑฐ ๊ฐ™์•„ ์ž‘์—…ํ•ด ์ฃผ์—ˆ๋‹ค.
๋ชจ๋‹ฌ ์ฐฝ ๋˜ํ•œ ์žฌ์‚ฌ์šฉ์ด ๋งŽ์•„ ์ปดํฌ๋„ŒํŠธ๋กœ ๋”ฐ๋กœ ์ž‘์—…ํ•ด ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ๋‹ค.

[ํ•ด๋‹น ์‚ฌ์ง„์€ ์ด๋ฏธ ๊ตฌํ˜„ํ•œ ๋ชจ์Šต์—์„œ ๊ธฐ๋Šฅ๋งŒ ์บก์ฒ˜ํ•œ ๊ฒƒ์ด๋‹ค.]

ํ•ด๋‹น ์ƒํ’ˆ ํด๋ฆญ ์‹œ ๋ชจ๋‹ฌ์ฐฝ์ด ๋œจ๊ณ  ์ƒํ’ˆ ์ด๋ฏธ์ง€, ์ด๋ฆ„, ๋ถ๋งˆํฌ ๋ฒ„ํŠผ, ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์ด ์กด์žฌํ•ด์•ผํ•œ๋‹ค.
์ด๋ฏธ ๊ฐ ์ƒํ’ˆ์„ map()๋ฅผ ์ด์šฉํ•ด ์ ์šฉํ•ด ๋‘” ์ƒํƒœ๋กœ ๋‚ด๋ถ€์— ๋ชจ๋‹ฌ ์ฐฝ์„ ๋„ฃ๊ณ  ์ž‘์—…ํ•ด ์ฃผ๋ฉด ๋™์ผํ•œ ์‚ฌ์ง„์ด ๋‚˜์˜จ๋‹ค.

const [isModal, setIsModal] = useState(false)
const showModal = () => {
	setIsModal(!isModal)
}
.
.
.
 {isModal ? <Modal/> : null }
.
.
.
 <img onClick={showModal} />

useState๋ฅผ ์ด์šฉํ•ด ๋ชจ๋‹ฌ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ 
์ด๋ฏธ์ง€ ํด๋ฆฌ ์‹œ false์—์„œ true๊ฐ€ ๋˜๊ฒŒ ์ž‘์—…ํ–ˆ๋‹ค.

์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด true์ด๋ฉด ๋ชจ๋‹ฌ์ฐฝ์ด ๋‚˜์˜ค๊ณ  ์•„๋‹ˆ๋ฉด ์•ˆ ๋‚˜์˜ค๊ฒŒ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ง„์งœ ์—ฌ๊ธฐ๊นŒ์ง€ ์ž‘์—…ํ•˜๋ฉด์„œ ์˜ค.. ์ƒ๊ฐ๋ณด๋‹ค ๊ธˆ๋ฐฉ ๋๋Š”๋ฐ?์ด๋žฌ๋‹ค.

์ด์ œ ๋Œ€๋ง์˜ ๋ถ๋งˆํฌ์ด๋‹ค...
์ผ๋‹จ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ๋ฒ„ํŠผ on,off๋Š” ๋ชจ๋‹ฌ์ฒ˜๋Ÿผ ์ƒํƒœ๋ฅผ ์ฃผ์–ด ๊ด€๋ฆฌํ•˜๋ฉด ๋˜๊ธฐ์— ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋ถ๋งˆํฌ ์ถ”๊ฐ€์‹œ localStorage์— ์ €์žฅ๋˜ ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ ์˜์—ญ์— ๋…ธ์ถœ๋˜์–ด์•ผํ•œ๋‹ค.
๋˜ํ•œ ๋ชจ๋‹ฌ์ฐฝ์— ์žˆ๋Š” ๋ถ๋งˆํฌ๋„ ๊ฐ™์ด ์ถ”๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ด๋•Œ ์ƒ๊ฐํ–ˆ๋˜๊ฑฐ ๋ถ๋งˆํฌ ํด๋ฆญ์‹œ localStorage์— ์ถ”๊ฐ€ํ•˜๊ณ 
localStorage์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ถ๋งˆํฌ ๋ฆฌ์ŠคํŠธ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜!

๊ทธ๋ ‡๋‹ค. ๋ง์ด ์‰ฝ์ง€ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋จธ๋ฆฌ ์—„์ฒญ ๋Œ๋ ธ๋‹ค.

const [isBookMark, setIsBookMark] = useState(false)
const [dataState, setDataState] = useState([])
const BOOKMARK = "BOOKMARK"

const storedData = JSON.parse(localStorage.getItem(BOOKMARK));
  
const handleBookmarkToggle = (item) => {
    if (dataState.includes(item) || storedData.includes(item)) {
      const filterData = dataState.filter(el => el.id !== item.id)
      setDataState(filterData)
      localStorage.setItem(BOOKMARK, JSON.stringify(filterData))
    } else {
      setDataState([...dataState, item])
      localStorage.setItem(BOOKMARK, JSON.stringify([...dataState, item]))
    }
  }

์•„์ง ๋ฆฌ๋•์Šค๋Š” ๊ณต๋ถ€๋ฅผ ์ œ๋Œ€๋กœ ๋ชปํ•ด์„œ State๋กœ ์ž‘์—…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

dataState์— ๋ถ๋งˆํฌ์— ํด๋ฆญ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ’์œผ๋กœ ํ•ด๋‹น ๊ฐ’์„
localStorage์— ๋„ฃ์„ ์˜ˆ์ •์ด๋‹ค.

storedData๋Š” localStorage์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์—ˆ๋‹ค.

dataState์™€ storedData์— item์ด ์กด์žฌํ•  ๊ฒฝ์šฐ์™€ ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์˜ ์กฐ๊ฑด์„ ์ฃผ์—ˆ๊ณ 
๊ทธ ๊ฐ’์„ locaStorage์— ์ €์žฅํ•ด ์ฃผ์—ˆ๋‹ค.

์ด ๋•Œ ์ €์žฅ์€ ์ž˜ ๋˜์—ˆ๋‹ค...!

๋ฌธ์ œ๋Š” ๋ถ๋งˆํฌ ํด๋ฆญ ์‹œ localStorage์— ์ถ”๊ฐ€๋Š” ๋˜์ง€๋งŒ ์ƒˆ๋กœ๊ณ ์นจ ํ›„ ๋‹ค๋ฅธ ์ƒํ’ˆ ํด๋ฆญ ์‹œ ๊ธฐ์กด ์ƒํ’ˆ ์ดˆ๊ธฐํ™” ํ›„ ์ถ”๊ฐ€๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค...ใ… 

ํ˜ผ์ž ๋™๋™ ์•“์•„ ๋ญ๊ฐ€ ๋ฌธ์ œ์ง€..?

์ด ๋ถ€๋ถ„์€ ํŽ˜์–ด๋‹˜๊ณผ ๊ฐ™์ด ํŽ˜์–ด ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ
ํŽ˜์–ด๋‹˜์ด ๋„์›€์„ ์ฃผ์…”์„œ ํ•ด๊ฒฐ ๋˜์—ˆ๋‹ค! ์ง„์งœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.ใ… .ใ… ๐Ÿ™‡โ€โ™€๏ธ

์ด๋ถ€๋ถ„์€ ๋‹ค์Œ ๋ธ”๋กœ๊น…์œผ๋กœ...

to be continued...


โœ๏ธ ๋งˆ์น˜๋ฉฐ

์‚ฌ์‹ค ์ƒํ’ˆ ์„น์…˜์€ ๋‚ด๋ถ€์— ๋ชจ๋‹ฌ ์ฐฝ, ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ์ด ๊ฐ™์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด์„œ
๋งŽ์€ ์‹œ๊ฐ„์„ ์žก์•„ ๋‘์—ˆ๋‹ค.

๋˜ํ•œ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌํ•ด ๋ณด์ž๋Š” ์ƒ๊ฐ์œผ๋กœ ํ•™์Šต ์ดํ›„์— ์ž‘์—…์„ ๋ณ„๋กœํ•˜์ง€ ์•Š..์œผ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜...!

์™€! ์ด๊ฑฐ ์ด๋Ÿฌ๋‹ค๊ฐ€ ๋ฉ”์ธ ํ™”๋ฉด๋งŒ ์žก๋‹ค๊ฐ€ ๋๋‚˜๊ฒ ๊ตฌ๋‚˜...! ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋™๊ธฐ ๋ถ„๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ ํ˜ผ์ž ํ•˜๋‹ค๊ฐ€ ๋ง‰ํžˆ๋ฉด
chat GPT์—๊ฒŒ ๋ฌผ์–ด๋ณด์•˜๋‹ค. (์–ด์ฉŒ๋ฉด CPT๊ฐ€ ๋‚˜์˜ ๋™๊ธฐ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.)

GPT๊ฐ€ ๊ฐ€๋” ์งˆ๋ฌธ์˜ ์˜๋„์™€ ๋ฐ˜๋Œ€๋กœ ๊ฐˆ ๋•Œ๋„ ์žˆ์ง€๋งŒ ์˜คํƒ€ ์ฐพ๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ ์–ด๋–ค๊ฑธ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ๋ถ€๋ถ„์—์„œ ๋งŽ์€ ๋„์›€์„ ์–ป์—ˆ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€