Hace varios días me adaptaron a un nuevo departamento. Mi nuevo compañero de trabajo me dio la tarea de refactorizar un proyecto de React existente.
Cuando estaba leyendo el código, me sorprendió la forma de utilizar la API Context. El codificador anterior, que puso todo (sí, casi todo) en un objeto Contexto, lo trató como una tienda para administrar todos los estados e incluso algún estado temporal local. ¡Eso es una locura!
Y también codifica todo para una página en un solo (sí, absolutamente solo uno) componente en un archivo .ts. Es muy difícil para mí dejar claro en mi mente la lógica del código. Pero todavía acepto este código de mierda (no tengo otra opción), así que tomo una gran decisión: reescribiría todas estas páginas en una semana con Mobx y dividiría el código en diferentes componentes funcionales.
Con Mobx, creo varias tiendas para manejar todos los datos de las API y divido un componente enorme en diferentes partes pequeñas; todo empieza a volverse claro y sencillo. El estado local debe estar dentro de su alcance donde se usará, la parte común se obtendrá de la tienda de Mobx.
Finalmente eliminé por completo el objeto Contexto, se eliminaron miles de líneas de código y ¡el mundo volvió a estar en silencio!
Quiero decir algo sobre Context API. Si realmente tiene algo, como información de configuración global para compartir con toda la aplicación, puede usar la API de contexto, pero si solo desea evitar el uso de alguna biblioteca de administración de estado de terceros, es una mala idea tratar el contexto como un reemplazo.
Deje que el contexto sea contexto y deje que bibliotecas como Mobx administren el estado.
¡Detenga el abuso de la API React Context, por favor!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3