Utilizando React Hooks + Capacitor para acceder a las API nativas móviles

Rate this content
Bookmark

Usando Capacitor, puedes crear fácilmente aplicaciones móviles nativas para iOS y Android utilizando todas las herramientas web de React que conoces y amas. Pero, ¿cómo accedemos a las API nativas? ¡Con el paquete @capacitor-community/react-hooks, podemos acceder rápidamente y fácilmente a las API nativas del dispositivo, como la cámara, el sistema de archivos y la geolocalización, utilizando React Hooks!

FAQ

Capacitor es una herramienta desarrollada por Ionic que permite compilar aplicaciones web en proyectos nativos de iOS o Android. Es de código abierto y está licenciado bajo MIT.

Capacitor se integra con React a través de hooks personalizados que envuelven los complementos oficiales de Capacitor, facilitando el uso de APIs nativas como la cámara, el almacenamiento y el sistema de archivos directamente en tus aplicaciones React.

El complemento de la cámara de Capacitor permite tomar fotos nuevas o acceder a la galería con una sola llamada de función. Además, ofrece opciones para establecer la calidad de la imagen y abrir el editor nativo.

El hook useCamera, parte de los hooks de React para Capacitor, permite interactuar con la cámara de un dispositivo móvil. Utiliza la función getPhoto para tomar una foto o seleccionar una de la galería, integrándose fácilmente en aplicaciones React.

Puedes encontrar más información y contribuir a la comunidad de Capacitor en GitHub, donde se mantienen todos los desarrollos y complementos relacionados con esta herramienta, creada y mantenida por Ionic.

Sí, es posible probar aplicaciones de Capacitor en iOS utilizando el simulador de iOS que viene incluido con Xcode, disponible gratuitamente en Mac, lo cual es ideal para pruebas incluso de aplicaciones web para ver cómo se comportan en iOS.

Thomas Vidas
Thomas Vidas
7 min
21 Jun, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Capacitor es una poderosa herramienta desarrollada por Ionic que permite compilar aplicaciones web en proyectos nativos de iOS y Android. Viene con un conjunto de complementos, incluido el complemento de la cámara, y tiene un paquete de React Hooks para una integración perfecta con aplicaciones de React. La charla incluye una demostración que muestra el botón de gancho de la cámara y la representación de las fotos seleccionadas. El presentador enfatiza el uso de useEffect y useState para funcionalidades adicionales. La charla concluye con una mención a la comunidad de Capacitor y agradecimientos por asistir.

1. Introducción a Capacitor y React Hooks

Short description:

Hola, mi nombre es Thomas Vietas y soy un Ingeniero de Experiencia de Desarrollo de Capacitor que trabaja en Ionic. Capacitor es una herramienta creada por Ionic que te permite compilar tus aplicaciones web en un proyecto nativo de iOS o un proyecto nativo de Android. Es muy poderoso y viene con un conjunto de complementos, incluido el complemento de la cámara. También tenemos un paquete de React hooks que envuelve todos los complementos oficiales, haciéndolos sentir como en casa en tu aplicación de React.

Hola, mi nombre es Thomas Vietas y soy un Ingeniero de Experiencia de Desarrollo de Capacitor que trabaja en Ionic y hoy voy a explicar cómo puedes usar los hooks de React y Capacitor juntos para acceder a las API nativas móviles.

Primero que nada, es posible que estés pensando, ¿qué diablos es Capacitor? Nunca había oído hablar de esto. ¡No te preocupes! Capacitor es una herramienta creada por Ionic que te permite compilar tus aplicaciones web en un proyecto nativo de iOS o un proyecto nativo de Android. Es de código abierto, con licencia MIT. Puedes pensar en ello como React Native o como Flutter. La gran diferencia es que estamos tomando tu HTML, tu CSS, tu JavaScript y colocándolo en un proyecto de iOS o Android. Si funciona en la web, funcionará con Capacitor.

Es muy poderoso. Capacitor viene con un conjunto de complementos, por lo que puedes acceder a cosas como el almacenamiento, el sistema de archivos, la información del dispositivo o, en este ejemplo, la cámara. También proporcionamos una API para que puedas comunicarte a través de nuestro puente de JavaScript. Puedes hacer cosas en la web, llamar a nuestro puente y eso hará cosas en el nativo. Es bastante sencillo y tenemos toneladas de documentación sobre cómo construir tus propios complementos, así como una gran comunidad de complementos existentes.

Usar el complemento de Capacitor es bastante sencillo, así que veamos cómo usar el complemento de la cámara. Importamos nuestra cámara desde el paquete de cámara de Capacitor y tenemos un objeto de cámara en este tipo de resultado, que simplemente nos dice si esto es una URI, es Base64, cosas así. Echemos un vistazo a nuestro objeto de cámara. Una cámara tiene un objeto de función llamado getphoto. Getphoto nos permite tomar una nueva foto o acceder a nuestra galería a través de una sola llamada de función, y eso nos permite establecer la calidad o si queremos abrir la edición en el editor nativo. Esto es algo que no podemos hacer en la web o en una PWA, por lo que es una herramienta muy poderosa para abrir el editor nativo y hacer que se sienta realmente nativo. Así que volvamos al código. La cámara.getphoto devuelve una imagen y a partir de ahí, buscamos el elemento de imagen HTML, como una etiqueta de imagen, y establecemos ese elemento de imagen HTML en los datos de imagen que hemos seleccionado de la galería. Esto funciona muy bien en cualquier aplicación de React o cualquier aplicación web, pero esto puede no sentirse muy Reactivo o muy hooky si estás usando hooks de manera intensiva en tu proyecto.

Tenemos una gran comunidad, nuestra organización de comunidad de Capacitor, que ha creado un paquete de hooks de React. Los hooks de React envuelven todos nuestros complementos oficiales, como los que mencioné antes, el almacenamiento, el sistema de archivos, en este caso, la cámara, y los hacen sentir como en casa en tu aplicación de React que utiliza hooks de manera intensiva. Echemos un vistazo a la API del complemento de cámara de los hooks de React. Tenemos useCallback, que es un hook nativo de React, y tenemos useCamera, que es nuestro hook de cámara de la comunidad de Capacitor. Tenemos nuestro tipo de resultado que teníamos antes de nuestro paquete de cámara de Capacitor. Llamamos a nuestro hook useCamera para obtener nuestra foto, que es nuestro objeto de foto, y nuestro getPhoto, que llama a esa función de cámara.getPhoto que mostré en el otro ejemplo. Puedes pensar en esto como algo muy similar a useState, donde tenemos nuestro estado y luego nuestro setState. Luego tenemos esta función triggerCamera, que llama a useCallback, llama a nuestra cámara.getPhoto con la opción de permitir la edición y el tipo de resultado que queremos.

2. Demo de Capacitor y React Hooks

Short description:

Se siente mucho más familiar en una aplicación con muchos hooks de React. Pasemos a una demostración que preparé previamente. Tenemos nuestra aplicación y un componente personalizado llamado nuestro botón de gancho de cámara. Disparamos la cámara y mostramos la foto seleccionada. He compilado la aplicación iOS y la he puesto en el simulador de iOS. Tenemos nuestra aplicación Hello React Summit. Haga clic en el botón y seleccione una foto. Podemos configurar esto con useEffect o useState para obtener más funcionalidad. Consulta la comunidad de Capacitor en github.com/capacitor para obtener más complementos de Capacitor. ¡Gracias por asistir a mi Charla Relámpago!

Se siente mucho más familiar en una aplicación con muchos hooks de React. Pasemos a una demostración que preparé previamente. Así que aquí hay dos componentes importantes. Tenemos nuestra aplicación, que es simplemente nuestro archivo app.tsx que la mayoría de las aplicaciones tienen. Tenemos este otro componente personalizado llamado nuestro botón de gancho de cámara, al que vamos a ir. Este es solo un componente que tiene un div que muestra condicionalmente nuestra imagen si seleccionamos una foto y un botón que podemos hacer clic para activar nuestra cámara que dice, haz clic en mí. Vamos a pasar a las cosas buenas. En nuestro ejemplo de diapositivas, tenemos foto y getphoto, que llama a nuestro gancho useCamera. Y a partir de ahí tenemos triggerCamera, que llama a nuestro gancho useCallback, que llama a, puedes pensar en esto como camera.getphoto, pero obteniéndolo del gancho. Es solo getphoto, es calidad del 100 por ciento. No quieres abrir el editor nativo con nuestro tipo de resultado, que es una URL de datos. Una vez que hemos seleccionado, una vez que activamos nuestra cámara, hemos cambiado este botón, hemos seleccionado algo que establecerá esta foto en un valor que luego mostrará condicionalmente esta etiqueta de imagen.

Así que vamos a ver esto en acción. Ya he compilado la aplicación iOS y la he puesto en este simulador de iOS. Esto está ejecutando el simulador de iOS. Viene incluido con Xcode, puedes obtenerlo de forma gratuita en cualquier Mac, Apple lo proporciona, es genial para probar, incluso solo tu aplicación web para ver cómo se ve en iOS. Tenemos nuestra aplicación Hello React Summit. Esta es una aplicación nativa, así que aquí, React Summit. Dice, Hola React Summit, y este botón Haz clic en mí, a partir de lo que tenemos aquí. Haz clic en mí. Así que vamos a hacer clic en él, así activamos el gancho de devolución de llamada de la cámara. Seleccionaré más fotos y elegiré esta hermosa cascada. Y a partir de ahí, ¡tada! Tenemos esta cascada. Es genial. Este código se siente mucho más familiar. Me encantan los hooks de React, esto se siente mucho más familiar al escribir mucho del otro código. Podemos configurar esto con useEffect para que se active automáticamente cuando se cargue por primera vez. O podemos configurarlo con useState para poder seleccionar varias fotos. Es realmente poderoso y se siente como en casa con cualquier otro código de React.

Así que voy a mencionar nuestra comunidad en github.com/capacitor. Esto es mantenido por Ionic, pero todos estos desarrolladores y todos estos complementos son mantenidos por nuestra gran comunidad de Ionic. Tenemos algunos complementos geniales de Capacitor, como la integración con Stripe. Cosas como un complemento de hooks de React, reproductores de audio o video nativos, HTTP nativo. Es realmente poderoso. Echa un vistazo si tienes una aplicación web de React que deseas convertir en una aplicación de Android e iOS. Nuevamente, soy Thomas Betus de Ionic, y muchas gracias por quedarte en mi Charla Relámpago, y estaré en el chat si tienen alguna pregunta. Gracias.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

No puedes usar Hooks condicionalmente... ¿o sí puedes?
React Summit 2023React Summit 2023
28 min
No puedes usar Hooks condicionalmente... ¿o sí puedes?
Top Content
Es la regla número uno de los hooks: “Solo llama a los hooks en el nivel superior”.
Pero, ¿qué pasaría si te dijera que esta regla no se aplica a todos los hooks? Uno de ellos puede ser usado condicionalmente de manera segura.
Para entender cómo useContext es diferente de otros hooks, y por qué está exento de esta regla principal, necesitamos saber por qué existe esta regla en primer lugar. Construiremos nuestro propio modelo mental del comportamiento de renderizado de react, centrado en cómo react mantiene un seguimiento de los datos en tiempo de ejecución: props, estados, refs... y valores de contexto.
Gestión eficiente del estado con Hookstate
React Advanced Conference 2021React Advanced Conference 2021
10 min
Gestión eficiente del estado con Hookstate
Si has trabajado con el gancho useState de React antes, es posible que te hayas preguntado por qué la gestión del estado global no puede ser igual de fácil. ¿Por qué todavía necesitamos tanto código repetitivo para gestionar el estado con la API de Contexto? ¿Y si no queremos estar limitados a herramientas con opiniones como Redux Toolkit o ser obligados a usar acciones y reductores en nuestras aplicaciones de React? Aquí es donde entra en juego Hookstate. Hookstate no es solo otra solución de gestión del estado. Además de ser rica en funciones, rápida y flexible, la biblioteca lleva la idea de simplificar la gestión del estado en las aplicaciones de React a un nivel completamente nuevo. En esta charla, presentaré Hookstate como una solución simple y eficiente de gestión del estado para aplicaciones de React.
No olvides React Memo
React Summit 2022React Summit 2022
7 min
No olvides React Memo
Los desarrolladores de React nos intrigan con el llamado compilador React Forget [que se supone que inyecta useMemo y useCallback automáticamente en el código]. Sin embargo, todavía no podemos entender las mejores prácticas para useCallback, useMemo y React.memo cuando lo escribimos por nuestra cuenta. El peor escenario es si seguimos colocándolo en todas partes sin entenderlo. Como resultado, puede causar un daño notable al rendimiento de nuestra aplicación. En esta charla, en casos de uso reales, verás soluciones al problema de usar hooks de manera incorrecta o abusar de ellos.
Desarrollo de aplicaciones ilimitadas con Expo y React Native
React Advanced Conference 2021React Advanced Conference 2021
27 min
Desarrollo de aplicaciones ilimitadas con Expo y React Native
Desarrollar aplicaciones es difícil, React y Expo lo hacen fácil!Nunca ha sido tan sencillo construir y desplegar potentes aplicaciones móviles con características increíbles para usuarios de Android e iOS en todo el mundo.Discutiremos la construcción y el despliegue de aplicaciones móviles de forma transparente desde la nube utilizando EAS, creando potentes clientes de desarrollo (como navegadores pero para el desarrollo de aplicaciones móviles) para probar tu aplicación, enviar actualizaciones OTA instantáneamente a los usuarios y mucho más, ¡sin necesidad de experiencia nativa!
Cómo compartir código entre una aplicación web de React y una aplicación móvil de React Native en Monorepo
React Summit 2022React Summit 2022
7 min
Cómo compartir código entre una aplicación web de React y una aplicación móvil de React Native en Monorepo
Por lo general, crear aplicaciones web y móviles requiere diferentes conjuntos de tecnologías, y es bastante difícil compartir código. Esta charla mostrará cómo agregué una aplicación web de React y una aplicación móvil de React Native en el mismo monorepo utilizando Nx, y cómo optimicé el intercambio de código entre la aplicación web de React y la aplicación móvil de React Native.
Construyendo una aplicación móvil con Expo, EAS y React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
35 min
Construyendo una aplicación móvil con Expo, EAS y React Native
Nunca ha sido tan fácil para los desarrolladores de React construir aplicaciones nativas para iOS y Android. En esta charla, veremos lo rápido que puedes lanzar tu aplicación con las herramientas de código abierto de Expo, Expo Application Services (EAS) y React Native. También discutiremos algunas de las mejoras recientes que hemos realizado y lo que viene a continuación.

Workshops on related topic

Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
Gestión del estado en React con Context y Hooks
React Summit Remote Edition 2021React Summit Remote Edition 2021
71 min
Gestión del estado en React con Context y Hooks
WorkshopFree
Roy Derks
Roy Derks
Mucho ha cambiado en el mundo de la gestión del estado en React en los últimos años. Donde Redux solía ser la principal biblioteca para esto, la introducción de las API de Contexto y Hooks de React ha revolucionado las cosas. Ya no necesitas bibliotecas externas para manejar tanto el estado del componente como el estado global en tus aplicaciones. En este masterclass aprenderás los diferentes enfoques para la gestión del estado en la era post-Redux de React, ¡todos basados en Hooks! Y como bonificación, exploraremos dos próximas bibliotecas de gestión del estado en el ecosistema de React.
Llevando tu aplicación web a nativa con Capacitor
JSNation 2023JSNation 2023
111 min
Llevando tu aplicación web a nativa con Capacitor
WorkshopFree
Mike Hartington
Mike Hartington
Entonces, tienes una increíble aplicación web que has construido y quieres llevarla de tu navegador web a la App Store. Seguro, hay muchas opciones aquí, pero la mayoría requerirá que mantengas aplicaciones separadas para cada plataforma. Quieres que tu código base sea lo más cercano posible en la Web, Android e iOS. Afortunadamente, con Capacitor, puedes tomar tu aplicación web existente y crear rápidamente aplicaciones nativas para iOS y Android para distribuir en tu App Store favorita.
Contenido: Este masterclass está dirigido a desarrolladores principiantes que tienen una aplicación web existente o están interesados en el desarrollo móvil. Repasaremos:- ¿Qué es Capacitor?- ¿Cómo se compara con otras soluciones multiplataforma?- Usando Capacitor para construir una aplicación nativa utilizando tu código web existente- Organizando nuestra aplicación para su distribución en tiendas de aplicaciones móviles con convenciones de nombres, iconos, pantallas de inicio y más
Masterclass práctico con SwiftUI, GraphQL y Neo4j AuraDB
GraphQL Galaxy 2022GraphQL Galaxy 2022
156 min
Masterclass práctico con SwiftUI, GraphQL y Neo4j AuraDB
WorkshopFree
William Lyon
William Lyon
Aplica el poder de los grafos al desarrollo de aplicaciones móviles iOS en este masterclass práctico. Exploraremos cómo utilizar la biblioteca Neo4j GraphQL para construir APIs de GraphQL respaldadas por Neo4j AuraDB y cómo integrar GraphQL en una aplicación iOS utilizando SwiftUI y la biblioteca Apollo iOS GraphQL mientras construimos una aplicación móvil de lectura de noticias.
Tabla de contenidos:- Introducción a Neo4j AuraDB- Construcción de APIs de GraphQL con la biblioteca Neo4j GraphQL- Introducción a SwiftUI- SwiftUI + GraphQL
Requisitos previosPara seguir el masterclass, los asistentes necesitarán una computadora Mac con una versión reciente de Xcode instalada. Será útil tener cierta familiaridad con Swift y el desarrollo de aplicaciones iOS, aunque no es necesario.
Llevando tu aplicación web de React a nativa con Capacitor
React Summit 2022React Summit 2022
92 min
Llevando tu aplicación web de React a nativa con Capacitor
WorkshopFree
Mike Hartington
Mike Hartington
Entonces, tienes una increíble aplicación de React que has construido y quieres llevarla de tu navegador web a la App Store. Seguro, hay muchas opciones aquí, pero la mayoría requerirá que mantengas aplicaciones separadas para cada plataforma. Quieres que tu base de código sea lo más cercana posible en la Web, Android e iOS. Afortunadamente, con Capacitor, ¡puedes tomar tu aplicación web existente y crear rápidamente aplicaciones nativas para iOS y Android para distribuirlas en tu App Store favorita!
Este masterclass está dirigido a desarrolladores intermedios que tienen una aplicación de React existente o están interesados en el desarrollo móvil con React. Repasaremos:
¿Qué es Capacitor?¿Cómo se compara con otras soluciones multiplataforma?Usando Capacitor para construir una aplicación nativa utilizando tu código web existenteMejorando nuestra aplicación para su distribución en las tiendas de aplicaciones móviles con convenciones de nombres, iconos, pantallas de inicio y más.