Verónica Clavijo Altamirano
veuge.clavijo@gmail.com
Veuge_C
Veuge
Veronica Clavijo Altamirano
Curiosidad por explorar Modulos Nativos
Explorar como crear librerias para usar en React Native
Modulos nativos en framework / otra solucion
Un framework para construir aplicaciones nativas utilizando JavaScript
Codigo Javascript se transforma en código nativo para cada plataforma
"Learn once, write anywhere"
NativeModules
$ npx react-native init {NombreDelProyecto}1. Settear tu ambiente de desarrollo
https://reactnative.dev/docs/environment-setup
2. Crear una aplicación de React Native
3. Correr la aplicación
$ npm start3. Correr la aplicación
$ npm run android$ npm run iosCREAR un archivo de módulo nativo personalizado
EXPORTAR un metodo nativo a Javascript!
REGISTRAR el modulo dentro de un PACKAGE
IMPORTAR Y UTILIZAR el modulo nativo en el entorno de React Native!
REGISTRAR el PACKAGE dentro del MainApplication.java
DIVERTIRSE
// MyNativeModule.java
package com.mdevconf;
import androidx.annotation.NonNull;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
public class MyNativeModule extends ReactContextBaseJavaModule {
MyNativeModule(ReactApplicationContext context) {
super(context);
}
@NonNull
@Override
public String getName() {
return "MyNativeModule";
}
}// MyNativeModule.java
package com.mdevconf;
import android.util.Log;
import androidx.annotation.NonNull;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class MyNativeModule extends ReactContextBaseJavaModule {
MyNativeModule(ReactApplicationContext context) {
super(context);
}
@NonNull
@Override
public String getName() {
return "MyNativeModule";
}
@ReactMethod
public void simpleLogger() {
Log.d("MyNativeModule", "Log desde la el modulo nativo!");
}
}
// MyNativePackage.java
// import statements....
public class MyNativePackage implements ReactPackage {
@NonNull
@Override
public List<ViewManager> createViewManagers(
@NonNull ReactApplicationContext reactContext
) {
return Collections.emptyList();
}
@NonNull
@Override
public List<NativeModule> createNativeModules(
@NonNull ReactApplicationContext reactContext
) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MyNativeModule(reactContext));
return modules;
}
}// MainApplication.java
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) {
.......
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
// Packages that cannot be autolinked yet can be added manually here, for example:
// packages.add(new MyReactNativePackage());
packages.add(new MyNativePackage());
return packages;
}
.......
};
.....
}
// App.js
import {
...
NativeModules,
...
} from 'react-native';
const {MyNativeModule} = NativeModules;
const App = () => {
const onPressButton = () => {
console.log('Este es un log desde javascript');
MyNativeModule.simpleLogger();
};
return (
<SafeAreaView>
<StatusBar barStyle={'light-content'} />
<View style={styles.container}>
<Text style={styles.text}>Hello MDevConf!</Text>
<Button title="Click me" onPress={onPressButton} />
</View>
</SafeAreaView>
);
};Ejemplo simplista
Recomendar al usuario que actualice su versión de nuestra app.
https://github.com/Veuge/MDevConf