React에서 이미지라던가 css, js 같은 파일들이 src 폴더 안에 있다면 import해서 불러오면 되지만 public에서는 어떻게 가져와야 할까요?
import 이름 from 경로;
<img src={이름} />
⭐예제:
import grass from './src_img/grass.png';
function Larva(){
return (
<div class="larva">
<div class="item i-1"></div>
<div class="item i-2"></div>
<div class="item i-3"></div>
<div class="item i-4"></div>
<div class="eye e-1"></div>
<div class="eye e-2"></div>
<img class="grass" src={grass} alt="grass" />
</div>
)
}
React의 공식 문서에 의하면 process.env.PUBLIC_URL
을 사용하면 된다고 합니다.
<img src={process.env.PUBLIC_URL + '경로'}
⭐예제
<img class ="grass" src={process.env.PUBLIC_URL + '/public_img/grass.png'} />
만약 html이라면 process.env.PUBLIC_URL
부분을 %PUBLIC_URL%
로 작성해야 합니다.
<link rel="icon" href="%PUBLIC_URL%/public_img/grass.png" />
<img>
를 <div>
로 바꿔주고, css 파일에서 background-img
속성을 이용해서 파일 경로를 지정해주면 됩니다.
background-img: url(파일 경로);
참고로💡 jsx는 public폴더를 기준으로, css는 src를 기준으로 절대 경로 정하므로 이점에 유의해서 경로를 지정해줘야 합니다.
⭐예제
<div class="grass"></div>
.grass{
background-image: url(./src_img/grass.png);
width: 350px;
height: 100px;
}
.grass{
background-image: url(../public/public_img/grass.png);
width: 350px;
height: 100px;
}
query argument
(ex. process.env.PUBLIC_URL)를 추가하거나 또는 경로나 파일명이 변경될 때마다 수정해줘야 합니다. 즉, webpack에 의해 관리되지 않아 개발자가 수동으로 해줘야 한다는 것입니다.SVG 파일을 제외하고, bmp, gif, jpg, jpeg, png 등의 파일들은 IMAGE_INLINE_SIZE_LIMIT 환경변수 설정을 통해 파일 크기를 최대 10,000 바이트까지 조절할 수 있습니다.
import 파일 from 경로;
.
.
.
<img class="grass" src={파일} alt="grass" />
🔗참고 링크: React🌍"Using the Public Folder"
🔗참고 링크: React🌍"Adding Images, Fonts, and Files"