Ánimo que en este post ya veremos nuestra app en funcionamiento sumando en Go!!
En la parte de RN me he creado un hook para poder usar este módulo que lo he llamado useNativeCounter (el código está en el repo).
Vamos a lo que nos interesa realmente, cómo hago yo para llamar a mis funciones de Go?
Pues si hemos seguido el post anterior ya tenemos nuestros módulos linkeados en nuestro proyecto así que solo toca programar la parte del bridge.(llévame al punto de Android)
iOS
Como siempre, iOS es mucho mas simple de realizarlo que en Android muchas menos cosas a tener en cuenta y hacer.
Creamos 2 archivos: el Header SampleModule.h y los Métodos SampleModule.m
en el archivo SampleModule.h con poner lo siguiente es suficiente
⚠️⚠️ "caution" ⚠️⚠️
El nombre que le demos a esta interfaz debe de ser el mismo que le daremos en Android, si no habra discordancia entre plataformas. Yo lo llamaré SAMPLE_MODULE como ejemplo.
Luego en nuestro archivo SampleModule.m podemos hacer algo tal que así
Android
(No preocuparse si tenemos Hermes habilitado, no afecta)
Podemos ir de varias maneras para poder usar nuestro módulo desde Android, aquí veremos una diferente a la de la documentación oficial de RN 😁 (de todas maneras en el repo dejo los archivos pertinentes para hacerlo de la manera oficial como en la doc.)
Vamos a crearnos una nueva clase que en este caso la llamaré SampleModule para seguir en la misma tónica que en iOS, y nuestra clase se vería algo así:
Como en iOS decía, aquí tenemos que poner el mismo nombre que queremos que el Bridge exponga a la hora de obtener los métodos y para tener ambas plataformas con el mismo nombre por eso el NAME = "SAMPLE_MODULE";
De la manera que lo haremos en este post ya no haría falta crear la clase Package, haremos esto en su lugar, nos vamos a la clase MainApplication y en getPackages añadiremos esto: (estoy usando la versión 0.61.5 de RN)
(Parece que hay mucha magia ahora mismo, pero os dejaré como siempre abajo links de interés para poder comprender todo esto de manera más amplia y que no se haga tan pesado este post también)
JavaScript / TypeScript
Hasta ahora y todavía se sigue haciendo así las llamadas de los módulos nativos en RN, pero aquí hemos venido a jugar e ir un poco más allá de lo normal y nos adelantaremos en el tiempo, os mostraré como olvidarnos del bridge y todos sus beneficios que eso conlleva(o no 🙃).
actualmente react-native funciona así
https://github.com/facebook/react-native/commit/060664fd3d9331f062696e68179bac9cd4544a06
http://blog.nparashuram.com/2019/04/lazy-native-modules-react-native-android.html
https://facebook.github.io/react-native/docs/native-modules-android
https://facebook.github.io/react-native/docs/native-modules-ios
Top comments (0)