Estoy confundido, o puedo decir que no tengo idea de cómo funciona realmente la exportación.
Tengo una aplicación React y tengo algunas rutas protegidas. Al iniciar sesión, creo una instancia de objeto de Client y la paso a los componentes secundarios a través de Contexto, y luego la consumo.
Recientemente vi un enfoque en el que el código de ejemplo exportaba una instancia de objeto desde un archivo directamente y simplemente la importaba en los archivos que querían consumir.
/** My approach **/ export default Example /** The Object Instance approach **/ export default new Example()¿Cuál es el ciclo de vida de la instancia del objeto? ¿Hay alguna desventaja con el segundo enfoque, porque parece mucho más fácil?
Si exporta la clase, con
export default Exampleluego, los consumidores del módulo podrán instanciar sus propias instancias, y cada instancia podrá tener sus propios datos. Por ejemplo
// 1.js import TheClass from './TheClass'; const tc1 = new TheClass(); tc1.foo = 'foo'; // 2.js import TheClass from './TheClass'; const tc2 = new TheClass(); tc2.foo = 'bar'; Ambos módulos pueden continuar usando tc1 y tc2 de manera completamente independiente, ya que son instancias separadas.
Pero si el módulo original exporta una instancia en lugar de una clase, todos los consumidores del módulo se ven obligados a usar la misma instancia:
// 1.js import theInstance from '...'; theInstance.foo = 'foo'; // 2.js import theInstance from '...'; // might not be a good idea to do theInstance.foo = 'bar' here // because that will affect 1.js as well // and will affect any other modules that imported the instanceEn resumen, exportar la clase es más reutilizable que exportar la instancia. A veces, la reutilización potencial es algo que un guionista considerará importante y, a veces, no lo es. (Y a veces, incluso si inicialmente no lo consideras útil, puedes encontrarte con una situación más adelante que te obligue a reconsiderar).
Y a veces desea asegurarse de que solo haya una instancia en un script, en cuyo caso
export default new Example()es una forma de lograrlo.