loading...
Cover image for Módulos nativos para React-Native con Go (3/4)

Módulos nativos para React-Native con Go (3/4)

x0s3 profile image x0s3 ・3 min read

Módulos nativos para React-Native con Go (3 Part Series)

1) Módulos nativos para React-Native con Go (1/4) 2) Módulos nativos para React-Native con Go (2/4) 3) Módulos nativos para React-Native con Go (3/4)

Ánimo que en este post ya veremos nuestra app en funcionamiento sumando en Go!!

HYPE

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.

Obj-c Header

Luego en nuestro archivo SampleModule.m podemos hacer algo tal que así

Obj-c Módulo

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í:

Java Módulo

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)

Java LazyModule

(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

Go-Ts

Android-gif

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í

RN ARCH

TO BE CONTINUED

Módulos nativos para React-Native con Go (3 Part Series)

1) Módulos nativos para React-Native con Go (1/4) 2) Módulos nativos para React-Native con Go (2/4) 3) Módulos nativos para React-Native con Go (3/4)

Posted on by:

x0s3 profile

x0s3

@x0s3

I'm a big fan of cross platform development, due to that, my main languages are TypeScript, Java and Golang. Thanks to this stack I'm able to develop and cover all areas of a mobile app development.

Discussion

markdown guide