Eso es algo que simplemente hará que la aplicación parezca más sofisticada, pero también hay un problema de seguridad aquí. ¿Qué pasa si teníamos algún usuario en el spa que estaba autorizado para actualizar los tratamientos, e hizo algo realmente mal, y fue despedido. Queremos asegurarnos de que si vuelven a la aplicación, actualizamos sus datos de usuario para que ya no estén autorizados para actualizar esos tratamientos. Es realmente difícil deshacerse de un token en el almacenamiento local, pero React Query puede hacer que podamos actualizar los datos, y podemos asegurarnos de que tenemos datos actualizados al inicio.
Ahora, tal vez te has inclinado hacia el lado de que React Query debería manejar todo. Sin embargo, necesitamos cuidar el uso de la autenticación en el almacenamiento local. Necesitamos conectarlos de alguna manera. ¿Queremos que se suscriban y actualicen la caché de React Query individualmente? Luego también tenemos esa situación del pollo y el huevo para el ID de usuario en la función de consulta.
La solución que he encontrado es descentralizar todo con un hook de usuario utilizado. Esta es la fuente de la verdad. Rastrea los datos del usuario con un estado interno del usuario que se expone como un valor de retorno del hook y esos son los datos canónicos del usuario. Usaremos el almacenamiento local para mantener los datos no solo a través de las sesiones, sino también cada vez que se inicializa un usuario utilizado. También mantendremos los datos del usuario actualizados con el servidor utilizando use query para que cualquiera de esos disparadores que mencioné actualice los datos. Podemos cuidar de esa situación del pollo y el huevo desactivando esa consulta si el usuario es falso. Cada vez que se actualizan los datos del usuario, pasarán por este hook de usuario utilizado. Para asegurarnos de que los datos se mantienen en todas partes donde necesitan estar en el estado interno del usuario, en la caché de consultas, y en el almacenamiento local.
Como me gustan las imágenes, aquí está el hook de usuario utilizado. Recibirá datos de React Query, cuando React Query obtenga datos actualizados del servidor, y también establecerá datos en la caché cuando obtenga datos de usuario de otras fuentes. Otra fuente de la que podría obtener datos de usuario es el hook de uso de autenticación, que recibe datos de inicio y cierre de sesión. El almacenamiento local se está configurando cada vez que se actualizan los datos del usuario, y también está proporcionando el valor inicial para el hook de usuario utilizado. Para profundizar un poco más, el hook de usuario utilizado va a devolver ese estado de usuario para las personas que quieran suscribirse a esos datos de usuario, y luego también va a devolver actualizar usuario, una función de actualización de usuario que toma datos de usuario y actualiza los datos para los tres jugadores. También tendrá un usuario claro, que actualiza los datos para los tres jugadores para que no haya usuario. Actualizar usuario. Y todas las actualizaciones, cualquier actualización de datos de usuario pasa por el uso de usuario. Entonces, cuando React Query actualiza los datos, utiliza la función de actualización de usuario del hook de usuario utilizado. Lo mismo con el hook de uso de autenticación.
Muy bien, esa es mi breve introducción a cómo resuelvo este problema. Si te gustaría ver el código, puedes ir a este repositorio de GitHub y puedes ir a aplicaciones completadas, spa de día perezoso, y cliente en lo que respecta al árbol de directorios. Concluiré esta masterclass hablando un poco sobre las bibliotecas npm que existen. La primera es React Query Auth.
Comments