Импорт нескольких файлов в реакцию
Я использую приложение create-response для моего проекта реагирования. Он имеет веб-пакет, настроенный для импорта изображений. Я хочу импортировать несколько изображений (например, 10) из папки изображений в компонент. Самый простой способ сделать это - добавить несколько операторов импорта, таких как -
import Img0 from '../images/0.png';
import Img1 from '../images/1.png';
import Img2 from '../images/2.png';
import Img3 from '../images/3.png';
import Img4 from '../images/4.png';
import Img5 from '../images/5.png';
import Img6 from '../images/6.png';
...
Вышеприведенный код не будет хорошим выбором, если у нас есть несколько файлов для импорта. Есть ли способ добавить инструкции импорта в цикле? Я попытался добавить цикл, но мне не удалось изменить переменные Img0, Img1 и т.д. (С использованием ES6 `` не работал, поскольку он преобразовал переменную в строку)
Ответы
Ответ 1
Вы не можете использовать один оператор import, но вы можете сделать это:
function importAll(r) {
let images = {};
r.keys().map((item, index) => { images[item.replace('./', '')] = r(item); });
return images;
}
const images = importAll(require.context('./images', false, '/\.png/'));
<img src={images['0.png']} />
Источник.
Ответ 2
Я думаю, что, возможно, лучше использовать файл index для папки изображений.
Предположим, у вас есть эта структура:
![Initial folder structure, where all images are on subfolders inside assets/images]()
И вам нужно импортировать все ваши изображения в ваш HomePage компонент.
Вы можете легко создать файл index.js
в папке с изображениями, экспортируя все изображения с помощью require, например:
export const Background = require('./bg/background.jpg');
export const First = require('./photos/first.jpg');
export const Second = require('./photos/second.jpg');
export const LinkedIn = require('./social/linkedin.png');
Затем в свой компонент вы можете импортировать все из них с помощью одного импорта.
import {
Background,
First,
Second,
LinkedIn
} from '../../assets/images'
И это будет ваша окончательная структура папок:
![Final folder structure where we have an index.js inside assets/images]()
Надеюсь, это поможет! ;)