๊ฐœ๋ฐœ

๋ฆฌ์•กํŠธ 2์ผ์ฐจ

Domaya 2022. 12. 27. 20:44

1.

      {title.map((item, index) =>
        {return <div key={index}>
          <div className='list' key={index}>
            <h4>{item} <span onClick={() => {let copy = [...like]; copy[index]++; setLike(copy)}}>๐Ÿ‘</span>{like[index]}</h4>
          </div>
          <p>{day[index]}</p>
        </div>})}

Warning: Each child in a list should have a unique "key" prop.

 

๋งŒ์•ฝ key ์—†์ด ๋ฐฐ์—ด์„ ๋ Œ๋”๋งํ•œ๋‹ค๋ฉด, ๋ฐฐ์—ด์— 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ถ”๊ฐ€๋˜๋Š” ์ƒํ™ฉ์ด๋ผ๋„ React๋Š” N+1๊ฐœ์˜ ์ „์ฒด ์š”์†Œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฆฌ๋ Œ๋”๋งํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ key๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ธฐ์กด ์š”์†Œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋ฉด ๊ทธ๋Œ€๋กœ ๋‘๊ณ , ์ƒˆ๋กœ ์ƒ๊ธฐ๋Š” ์š”์†Œ๋งŒ ๋ฆฌ๋ Œ๋”๋งํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ <div className='list' key={index}>์™€ ๊ฐ™์ด key๋ฅผ ๋„ฃ์—ˆ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ array index๋ฅผ key๋กœ ์ฃผ๋Š” ๊ฒƒ์„ ๋ฆฌ์•กํŠธ๋Š” ์ง€์–‘ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ...

https://medium.com/sjk5766/react-%EB%B0%B0%EC%97%B4%EC%9D%98-index%EB%A5%BC-key%EB%A1%9C-%EC%93%B0%EB%A9%B4-%EC%95%88%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0-3ce48b3a18fb

 

[React] ๋ฐฐ์—ด์˜ index๋ฅผ key๋กœ ์“ฐ๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 

React ๊ณต์‹ Document๋ฅผ ๋ณด๋‹ค๊ฐ€ ์•„๋ž˜ ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์บก์ณํ•œ ๋ถ€๋ถ„์„ ๋ณด๊ฒŒ ๋˜์—ˆ๊ณ  ํ™•์ธํ•œ ์‚ฌํ•ญ๋“ค์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

medium.com

์œ„ ๋งํฌ์—์„œ ์ด์œ ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

2. public ํด๋”

https://bokjiho.medium.com/react-%EB%A6%AC%EC%95%A1%ED%8A%B8%EC%97%90%EC%84%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EA%B2%BD%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-public-src-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EC%B0%A8%EC%9D%B4-fddb4f455c2a

 

[React] ๋ฆฌ์•กํŠธ์—์„œ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ์„ค์ •ํ•˜๊ธฐ (public, src ๋””๋ ‰ํ† ๋ฆฌ ์ฐจ์ด)

public ๋””๋ ‰ํ† ๋ฆฌ VS. src ๋””๋ ‰ํ† ๋ฆฌ

bokjiho.medium.com

์œ„์™€ ๊ฐ™์ด ํผ๋ธ”๋ฆญ ํด๋”์— ์ด๋ฏธ์ง€๋“ค์„ ๋„ฃ์–ด๋’€๋‹ค.

์ด๋ฅผ ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ,

ํผ๋ธ”๋ฆญ ํด๋”์— ๋„ฃ์–ด๋‘๋ฉด ๊ฒฝ๋กœ๋ฅผ ์ƒ๋žตํ•ด๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

<img src="img/yb1.jpg" className="w-25" alt="๋ชจ์ž" />

์œ„์™€ ๊ฐ™์ด ๊ฒฝ๋กœ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

 

๐Ÿ“ public directory
- ์ •์  ํŒŒ์ผ์„ ๋„ฃ๋Š” ๋””๋ ‰ํ† ๋ฆฌ (index.html์„ ๋น„๋กฏํ•œ html ํŒŒ์ผ, img ๋“ฑ)
-public ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์€ ํŒŒ์ผ์€ webpack์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ณ , ์›๋ณธ์ด build ํด๋”์— ๋ณต์‚ฌ๋œ๋‹ค.
-ํŒŒ์ผ์ด ํ›„์ฒ˜๋ฆฌ(post-process) ๋˜๊ฑฐ๋‚˜ ๊ฒฝ๋Ÿ‰ํ™”(minify)๋˜์ง€ ์•Š์Œ
-ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ํ•ด๋‹น ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ 404 ์˜ค๋ฅ˜๋ฅผ ์‘๋‹ต๋ฐ›๊ฒŒ ๋จ
-๊ฒฐ๊ณผ ํŒŒ์ผ๋ช…์— content hash๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ํŒŒ์ผ์ด ์ˆ˜์ •๋  ๋•Œ ๋งˆ๋‹ค ์ง์ ‘ ํŒŒ์ผ๋ช…์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฟผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ

 

3.json ์‚ฌ์šฉํ•˜๊ธฐ

let data = [
	{
	    id : 0,
	    title : "NM HAIRY BEANIE",
  	    content : "Born in France",
	    price : 120000,
		img : 'img/yb2.jpg'
	},
	{
	    id : 1,
	    title : "FLARE Knit Beanie",
  	    content : "Born in Seoul",
	    price : 110000,
		img : 'img/yb3.jpg'
	},
	{
	    id : 2,
	    title : "SOFT BUCKET HAT WHITE",
  	    content : "Born in the states",
	    price : 130000,
		img : 'img/yb4.jpg'
	}
]
export default data;

์œ„์™€ ๊ฐ™์€ JSํŒŒ์ผ์ด ์žˆ๋‹ค. export default data;์— ์˜ํ•ด ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ data๋กœ importํ•ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

import data from './data'

์ด๋ ‡๊ฒŒ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด๋ฏ€๋กœ state๋กœ ๊ด€๋ฆฌํ•ด์ค€๋‹ค.

  let [Data, setData] = useState(data);

ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด mapํ•จ์ˆ˜๋ฅผ ๋Œ๋ฆฌ๋Š” ์ฝ”๋“œ

       <div className='container'>
          <div className='row'>

          {Data.map((item, index) => {
            return <div key={index} className='col-md-4'>
              <img src={item.img} className='img-fluid' alt='yb'/>
              <h4>{item.title}</h4>
              <p>{item.content}</p>
              <p>{item.price}</p>
            </div>
          })}

          </div>
        </div>

 

ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด ๋งŒ๋“  ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์‚ฌ์ดํŠธ

์‚ฌ์ง„์€ ๋ชจ๋‘ ์šฐ๋ฆฌํŒ€์›์ด๋ผ ๋ชจ์ž์ดํฌ^__^