Así que Remix nos permitió unir el backend y la UI de una manera que nunca se había hecho antes con el cargador y la acción y nuestra UI todo en el mismo archivo. Y esta es una demostración bastante simple de cómo funciona desde una perspectiva de ruta. Así que tenemos nuestra ruta de proyectos y aquí tenemos nuestro cargador para cargar esos proyectos y tenemos nuestro formulario para agregar nuevos proyectos y la pieza de backend para esa mutación.
Pero a veces tenemos UIs que no son tan centradas en la URL, por ejemplo el botón de 'me gusta' de Twitter, cuando hago clic en ese botón de 'me gusta' eso no me va a llevar a otro lugar, no solo lo renderizo en una página especial que tiene una ruta específica, renderizo el botón de 'me gusta' para cada uno de los tweets que están en la página y eso no funciona muy bien como algo que te gustaría pegar en un cargador o una acción para una ruta particular necesariamente y aquí hay otro ejemplo de un cuadro combinado que está haciendo una búsqueda y esto es lo que realmente vamos a estar demostrando hoy.
Así que, tengo una implementación de esta aplicación aquí mismo, no estamos renderizando el cuadro combinado todavía porque vamos a construirlo juntos y conectarlo al backend y va a ser genial. Así que, eso es todo. Es hora de la demo. Así que, lo primero es que tenemos esta aplicación en funcionamiento aquí mismo, estamos en la versión 01.b4 de la aplicación y estamos en el directorio de la aplicación bajo rutas y bajo este directorio de recursos es donde encontraremos a los clientes. Así que, vamos a tener esta ruta para slash recursos slash clientes y esa va a ser la ruta de la API que vamos a estar usando para ir a buscar un montón de clientes.
Ahora, una cosa realmente genial sobre Remix es que si no tienes una exportación por defecto de tu módulo, Remix tratará tu módulo como un recurso. Y así, lo que queremos decir con eso específicamente es que puedo decir exportar una función asíncrona, vaya, una función, vamos, ahí, llamada cargador y aquí voy a devolver JSON y ese JSON en realidad va a venir de Remix run node y diremos hola mundo. Y si guardo eso y vengo aquí, puedo ir a recursos, clientes y voy a obtener hola mundo. Ahora, no hay nada especial en el directorio de recursos aparte del hecho de que mi editor parece que le gusta darle un icono especial, pero no hay nada especial en esto. Podemos llamar a esto como queramos y resulta que la forma en que me gusta que funcione mi URL para esto es tener un slash recursos y eso es todo. Así que donde quiera que queramos que sea esa URL, ahí es donde va a estar el archivo. Así que al tener una exportación de cargador pero sin exportación por defecto, esta es solo una solicitud regular para como una solicitud de API. Así que con eso en su lugar, ahora podemos construir algo de UI que interactúa directamente con este cargador que hace solicitudes de búsqueda. Pero lo que es realmente genial de Remix es que en realidad podemos añadir un montón de otras exportaciones a esto también. Podemos exportar const koala equals Kodi, como no importa. Podemos hacer lo que queramos aquí y Remix lo ignorará en sus construcciones. Así que lo que eso significa es que en realidad podemos exportar un componente aquí que consume este cargador y eso es exactamente lo que vamos a hacer. Y porque sé que probablemente no te importa verme escribir un montón de JSX, en realidad he escrito todo el material de JSX allí. Así que aquí está nuestro cargador, es justo lo que teníamos antes, pero luego tenemos un montón de otras cosas de JSX aquí que, como dije, probablemente no te importa verme hacer todo eso. Así que saltándonos la parte de JSX, la parte más importante e interesante aquí es que estamos usando esto use combo box, que es un gancho de Downshift. Downshift es una biblioteca que construí hace años cuando estaba en PayPal, y es para hacer esta experiencia de cuadro combinado para nosotros. Y todo lo que necesitamos hacer es proporcionarle los elementos y podemos responder a los cambios de valor de entrada a medida que el usuario está escribiendo. Así que eso es perfecto. Eso es exactamente las dos cosas que necesitamos. Y con eso estamos exportando este cuadro combinado, pero todavía somos solo una ruta de recurso. No hay nada especial pasando aquí.
Comments