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.
Comments