nextjs 에서 이미지를 추가하는 방법중 최적화를 해서 하는 방법이 있다고 한다.
기존 방식은
import React from 'react'
export default function List() {
let 상품 = ['Tomatos','Pasta','Coconut'];
return (
<div className='title'>
<h4>상품목록</h4>
{
상품.map((value, index)=>{
return (
<div className='food' key={index}>
<img className='food-img' src={`/food${index}.png`}/>
<h4>{value} $40</h4>
</div>
)
})
}
</div>
)
}
이런식으로 img 태그를 활용해서 public에 선언한 이미지명을 불러오는 방식이었다.
최적화된 이미지 넣는 방법
성능과 속도가 중요하다고 생각이 될때는, <Image/>라는 태그가 있다.
그럼 자동으로 이미지 lazy loading & 사이즈 최적화 & layout shift 방지를 해준다고 한다.
방법은
1. 상단에 <image> 태그를 import 해와야한다.
2. 이미지 경로를 넣을려면 이미지를 상단에서 import 해온뒤 그걸 넣어야한다. (이게 쫌...그럼)
import Image from 'next/image';
import React from 'react'
import image from '/public/food0.png'
export default function List() {
let 상품 = ['Tomatos','Pasta','Coconut'];
return (
<div className='title'>
<h4>상품목록</h4>
{
상품.map((value, index)=>{
return (
<div className='food' key={index}>
<Image className='food-img' src={image} />
{/* <img className='food-img' src={`/food${index}.png`}/> */}
<h4>{value} $40</h4>
</div>
)
})
}
</div>
)
}
3. 참고로 다른 사이트에 올려둔 이미지를 <Image/>에 절대 경로로 집어넣고 싶으면
import Image from 'next/image'
export default function Home() {
return(
<div>
<Image src="https:.../test.png" width="500" height="500"/>
<div/>
)}
width,height 을 직접 넣어줘야 된다고 한다.
고민되는 문제
import를 해서 이미지명을 직접 가져오게되면, map함수를 사용했을때, 동일이미지만 표시할 수 밖에 없다. 이걸 해결하기위한 다른 방법이 있을거라 생각이 되지만 지금당장은 모르겠으니 좀더 공부를하면서 찾아봐야겠다.
'prev > NextJS' 카테고리의 다른 글
GiftWave 프로젝트/휴대폰인증 (setInterval, useInterval) (0) | 2023.07.22 |
---|---|
Molecule 과 Organism (by PhoneAuth) (0) | 2023.07.19 |
Nextjs 카카오 소셜 로그인(REST API 방식) (0) | 2023.07.08 |
Environment Variables (.env 공식문서 번역하기) (0) | 2023.07.03 |
NestJS 해보기 (0) | 2023.05.24 |