¿Puedes instanciar globalmente una clase y eso será confiable en react-native? es decir
// logs.ts const instance = new Instance() export { instance } // something.tsx const Component = () => { instance.method() ... } Si el method incrementara una propiedad en 1, ¿se habría incrementado esa propiedad siempre la cantidad de veces que se llamó al method a lo largo del proyecto?
El principal beneficio aquí es la simplicidad. Por ejemplo, es más fácil definir
class SomeClass { constructor(properties){} addProperty(key,value){ this.properties[key] = value } }de lo que es hacer el equivalente en redux. ¿Por qué la gente no hace lo anterior con más frecuencia?
Simplemente cambiar el valor en algún objeto no dará como resultado cambios de estado/hará que un componente se vuelva a renderizar. Todavía necesita un proveedor estatal para configurar el estado. Si desea cambiar el estado de ese proveedor, deberá ejecutar setState (o dispatch y useReducer ), lo que significa que deberá pasar el envío de esa función a todos sus elementos secundarios. A medida que su aplicación crezca, definitivamente querrá/necesitará useReducer y tal vez incluso varios proveedores, volverá a implementar redux, que de todos modos tiene solo unas 200 líneas de código. Entonces, la pregunta será por qué volvió a implementar redux, que es una biblioteca tan popular que la mayoría de la gente sabe exactamente cómo usar y hay mucha documentación, a favor de su versión local de redux que no proporciona mucho valor adicional ?
En redux, un beneficio principal son las herramientas como redux-logger, redux-thunk, herramientas de desarrollo de redux y viajes en el tiempo y otras, etc., que le permiten reproducir los cambios realizados o deshacerlos. Claro que es fácil modificar un objeto, pero usar redux le permite ver de manera comprobable y consistente cómo un objeto (el estado redux) cambia con el tiempo y deshacerlo. Puede probar que los creadores de acciones devuelven las acciones correctas. Puede probar por separado que dadas acciones específicas, el reductor se comporta como se esperaba y reproducirlo con mockStore. En resumen, al usar redux, obtiene la versión empresarial respaldada por una gran comunidad de expertos que han ayudado a mejorar e implementar esencialmente la clase simple que demostró.
Aunque puede hacer esto, se separa del punto de redux. Redux está destinado a ser un almacén de administración de estado centralizado y, por lo tanto, permite que los componentes
Haciendo la primera opción, se pierden todos estos beneficios.
Dicho esto, si tiene varios componentes en un archivo y desea que todos compartan el mismo estado global (sin exportarlo), usar el constructor de clases para hacerlo no es gran cosa, siempre que el proyecto no lo sea. t siendo trabajado por otros desarrolladores.
Sin embargo, tendría más sentido en ese caso crear una clase de componente general y transmitir el estado, ya que ese es el objetivo de React. Declarar una clase externa e intentar administrar el estado de la primera manera sería un enfoque declarativo, que es lo que React no quiere que hagan los desarrolladores (es decir, hay una mejor manera, como crear una jerarquía de componentes). De esa manera, los componentes se vuelven a renderizar cuando cambia el valor y no surgen errores extraños.