Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

174
Vistas
¿Puedes usar una constante en lugar de la ruta del módulo cuando usas '"importar obj from "../modulePath"'? (Reaccionar)

Me gustaría importar una matriz llamada "contenido" de uno de varios archivos diferentes. Me gustaría establecer de qué módulo extraer en función de una const que creo (pageName), que titula la página en el componente PageTitle. Concatenaré esto a "modulePath" que se encuentra en un directorio fuera de mi carpeta de componentes. Pero tengo problemas para importar contenido cuando hago referencia a la ruta del módulo como una constante.

 import React from "react" import PageTitle from "./PageTitle" import BuildItems from "./BuildItems" function camelize(str) { return str.replace(/(?:^\w|[AZ]|\b\w|\s+)/g, function (match, index) { if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces return index === 0 ? match.toLowerCase() : match.toUpperCase(); }); } const pageName = "Settings"; const modulePath = "../" + camelize(pageName); import content from modulePath; function View() { return ( <div className="View"> <PageTitle content={pageName} layout="mini" /> {content.map(BuildItems)} </div> ); } export default View;

La estructura de la carpeta src es la siguiente:

 src/ components/ App.js BuildItems.js PageTitle.js View.js index.js settings.js

Funciona bien cuando reemplazo import content from modulePath con el import content from "../settings" . Pero deseo hacer esto dinámicamente cambiando el nombre de página const a cualquier otra cosa (esencialmente cambiando el contenido).

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Las importaciones de nivel superior deben ser cadenas estáticas conocidas en tiempo de compilación. Para su caso de uso, debe usar una importación dinámica en su lugar ( await import(...) ):

 import React from "react" import PageTitle from "./PageTitle" import BuildItems from "./BuildItems" function camelize(str) { return str.replace(/(?:^\w|[AZ]|\b\w|\s+)/g, function (match, index) { if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces return index === 0 ? match.toLowerCase() : match.toUpperCase(); }); } const pageName = "Settings"; const modulePath = "../" + camelize(pageName); function View() { const [content, setContent] = useState(null); useEffect(() => { (async () => { // using the `await import(modulePath)` syntax to import a path based on a variable setContent(await import(modulePath)) })(); }, []) if (content === null) { return <div>Loading...</div> } function load() { <PageTitle content={pageName} layout="mini" /> return content.map(BuildItems); } return ( <div className="View"> {load()} </div> ); } export default View;
about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda