Oto mój bieżący proces importowania obrazów i ikon w pakiecie internetowym za pośrednictwem ES6:
import cat from './images/cat1.jpg'
import cat2 from './images/cat2.svg'
import doggy from './images/doggy.png'
import turtle from './images/turtle.png'
<img src={doggy} />
To szybko się brudzi. Oto, czego chcę:
import * from './images'
<img src={doggy} />
<img src={turtle} />
Wydaje mi się, że musi istnieć sposób na dynamiczne importowanie wszystkich plików z określonego katalogu jako ich nazwy bez rozszerzenia, a następnie używanie tych plików w razie potrzeby.
Czy ktoś widział, jak to się robi, lub ma jakieś przemyślenia na temat najlepszego sposobu, aby to zrobić?
AKTUALIZACJA:
Korzystając z wybranej odpowiedzi, udało mi się to zrobić:
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|jpe?g|svg)$/));
<img src={images['doggy.png']} />
.map
rodzaju oczekuje wartości zwracanej. W twoim przypadkuforEach
zamiast tego użyłbyś starego dobrego .