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!

This talk has been presented at React Summit 2020, check out the latest edition of this React Conference.

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
The Talk discusses the use of the Use hook in React and its ability to be used conditionally. It explains the concept of the fiber tree and how hooks values are stored in memory. The Talk also delves into the conditional use of useContext and how it differs from useState. It explores the process of updating context values and optimizing context rendering. The role of the provider in managing context values and rendering is emphasized.
Gestión eficiente del estado con Hookstate
React Advanced 2021React Advanced 2021
10 min
Gestión eficiente del estado con Hookstate
This Talk introduces hook state as a flexible and simple state management solution for React. It demonstrates how hook state can be used for global state management, as well as for managing state within individual components. The speaker highlights the ease of using hook state for tasks such as adding, updating, and removing tasks. The conclusion encourages further exploration of hook state for efficient state management in React applications.
No olvides React Memo
React Summit 2022React Summit 2022
7 min
No olvides React Memo
The Talk covers topics such as React memo compiler, use memo and use callback, building custom hooks, and the benefits of using use ref. It also explores the similarities between use memo and use ref, and the use of React Memo for preventing re-renders and optimizing expensive calculations. The speaker also shares personal information and contact details.
Desarrollo de aplicaciones ilimitadas con Expo y React Native
React Advanced 2021React Advanced 2021
27 min
Desarrollo de aplicaciones ilimitadas con Expo y React Native
Today's Talk discussed building cross-platform apps with React Native and Expo, addressing challenges such as setting up the native runtime and managing dependencies. Expo provides a pre-built runtime, native APIs, fast iteration speed, and integrated cloud services. EAS build simplifies app deployment by handling native code signing and validation. Over-the-air updates allow instant updates to JS and assets. Custom native code can be added using auto-linking and config plugins, and Expo supports both Managed and Bare workflows.
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
This presentation focuses on sharing code between React web and React native mobile apps. The speaker demonstrates how to achieve feature parity using a Monorepo with NX. They highlight the importance of sharing non-UI code, such as business logic and state management, through shared libraries. This approach allows the apps to focus on UI code while keeping non-UI code separate. For more details, refer to the speaker's blog post.
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
This talk provides an overview of building React Native apps with Expo and Xcode. It covers Expo managed projects, XO, Turtle, customizing runtime, Expo Development Client, and EAS. The talk also mentions the advantages of Expo Updates, the focus on a customizable runtime, and adding native libraries. Favorite React Native apps and libraries are recommended, and the future goals include enhancing performance and improving the development experience through EAS.

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.