Así que aquí está mi flujo de trabajo actual para importar imágenes e íconos en el paquete web a través de 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} />
Esto se complica rápidamente. Esto es lo que quiero:
import * from './images'
<img src={doggy} />
<img src={turtle} />
Siento que debe haber alguna forma de importar dinámicamente todos los archivos de un directorio específico con su nombre sin extensión, y luego usar esos archivos según sea necesario.
¿Alguien vio esto hecho, o tiene alguna idea sobre la mejor manera de hacerlo?
ACTUALIZAR:
Usando la respuesta seleccionada, pude hacer esto:
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']} />
reactjs
webpack
ecmascript-6
klinore
fuente
fuente
.map
espera un valor de retorno. En su caso, uno usaría un buen ol 'en suforEach
lugar.r.keys.().map(...)
directamente ...Respuestas:
No en ES6. El objetivo de
import
yexport
es que las dependencias se pueden determinar estáticamente , es decir, sin ejecutar código.Pero dado que está usando webpack, eche un vistazo a
require.context
. Debería poder hacer lo siguiente:fuente
cra
importAll
no devolvió nada.Es fácil. Puede usar
require
(un método estático, la importación es solo para archivos dinámicos) dentro delrender
. Como el siguiente ejemplo:fuente
Tengo un directorio de banderas de países png llamado como au.png, nl.png, etc. Así que tengo:
index.js
Leí un archivo como este:
CountryFlagByCode.js
fuente
Un enfoque funcional para resolver este problema:
fuente
ACTUALIZAR Parece que no entendí bien la pregunta. @Felix lo hizo bien, así que verifique su respuesta. El siguiente código funcionará solo en un entorno Nodejs.
Agregar un
index.js
archivo en laimages
carpetaEsto le permitirá importar todo desde otro archivo y Wepback lo analizará y cargará los archivos necesarios.
fuente