stackoverflow를 보고 정리한 글입니다.
리팩토링 중 image를 가져올 때 (1)상대/절대경로를 작성
하거나 (2)image 파일을 한 개씩 import
하지 않고, 폴더 전체를 import 해서 코드를 작성하고 싶어서 찾아봤다.
require.context(
(directory: String),
//선택, 기본값 true
(includeSubdirs: Boolean),
//선택, 기본값 /^\.\/.*$/, 모든 파일
(filter: RegExp),
//선택, 'sync' | 'eager' | 'weak' | 'lazy' | 'lazy-once', 기본값 'sync'
(mode: String)
);
require.context(
directory,
(useSubdirectories = true),
(regExp = /^\.\/.*$/),
(mode = 'sync')
);
//nav.js
import imageAll from 'assets/ImageAll';
const Nav =() => {
const images = imageAll(
require.context('assets/images', true, /\.(png|jpe?g|svg)$/),
);
return (
...
<img src={images['ic_nav_store.png']} />
)
}
export default Nav;
// 변수
const storeIcon = images['ic_nav_store.png'];
// props 전달
<Store storeIcon={storeIcon}>
const Store = styled.div`
...
background-image: url(${(props) => props.storeIcon})
`