Framework: React Native ======================= .. image:: /logos/logo-react-native.png :scale: 35% :alt: Logo React native :align: center .. |date| date:: .. |time| date:: %H:%M Documentación básica de React Native para desarrollo de aplicaciones Híbridas. .. contents:: Índice Configuraciones ############### Instalar dependencias de react native ************************************* Tener instalado NodeJS desde su página oficial: https://nodejs.org/es/ .. attention:: npx viene instalado con npm y es su versión en la nube. De modo que si necesitas un paquete y no deseas instalarlo en tu máquina utiliza npx en lugar de npm. Herramientas de desarrollo ************************** App para ejecutar proyecto en fase desarrollo: - Android: https://play.google.com/store/search?q=expo&c=apps&hl=es&gl=US Emular aplicación ***************** - Para utilizar un emulador de Android, instalamos Android Studio y ejecutamos el icono del movil con la cabeza de android para ejecutar el ADV Manager. Arrancamos un emulador y ya podemos usarlo ejecutando el proyecto con ``npm run android`` o ``npm start`` y luego tecla **a**. Comandos básicos **************** - Crear proyecto: ``npx create-expo-app my-app`` (crea un proyecto en blanco o con sistema de navegación y seguir los pasos). - Ejecutar proyecto con emulador: ``npm run android`` (existen tres opciones: **android**, **ios** y **web**). - Ejecutar proyecto en la App oficial (recomendado): ``npm start`` (muestra un qr que podremos escanear con nuestro movil con la app de expo) .. attention:: Utilizamos npx para no tener que instalar expo y así tener compatibilidad en cualquier sistema a la hora de instalar. Estructura básica de react native ********************************* La estructura básica de react native es similar a la de React. El archivo **App.js** se presenta de la siguiente forma: .. code-block:: import { StatusBar } from 'expo-status-bar'; import { StyleSheet, Text, View } from 'react-native'; export default function App() { return ( Buenas! ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, }); Estructura similar a React ************************** La programación es básicamente idéntica a la de react en su base. Por tanto es recomendable echar un ojo al manual de react: https://pytonicus.github.io/fullcodersite/javascript/react.html Estructura recomendada para el proyecto *************************************** Lo ideal es crear una estructura escalable, este es un ejemplo de estructura recomendada: - **src**: Crear carpeta en la raiz del proyecto llamada src para todo nuestro código. Dentro de ella creamos: - **components**: carpeta para los componentes del proyecto. - **screens**: carpeta para las pantallas del proyecto. Por cada pantalla creamos una carpeta. - **navigation**: carpeta para añadir la configuración de navegación - **data**: carpeta para guardar información en la aplicación. Trabajando con componentes ########################## Crear una pantalla o screen *************************** En la carpeta screens, creamos una carpeta para la pantalla a la que llamaremos **main** y el archivo será **index.js** al que le pasaremos casi toda la lógica de *App.js**: .. code-block:: import { StyleSheet, Text, View } from 'react-native'; export default function MainScreen() { return ( Prueba de Index ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, }); - Ahora para cargar la pantalla vamos a editar **App.js**: .. code-block:: // importamos la pantalla nueva: import Main from "./src/screens/main/index"; export default function App() { // retornamos solamente la pontalla ya que si usamos view por ejemplo nos limitará. return (
); } .. note:: El componente que se utiliza para pintar una pantalla es **** y solo podemos utilizarlo una vez por pantalla. Trabajando con estilos ********************** .. code-block:: import { StyleSheet, Text, View } from 'react-native'; export default function MainScreen() { return ( {/* cargar un estilo en componente: */} Texto normal {/* cargar varios estilos en componente: */} Texto seleccionable ); } // definición de estilos (cambia el metodo de escritura de kebab-case a camelCase): const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, text: { color: "#ff0000", fontSize: 30 }, textSelect: { backgroundColor: "blue", fontSize: 15 } }); Tipos de Componentes React Native ################################# Componente View (pantalla) ************************** Es un componente para crear una pantalla: .. code-block:: import { Text, View } from 'react-native'; export default function MainScreen() { // todo lo que vaya dentro de View se mostrará en la pantalla del dispositivo de modo similar al componente Template de ReactJS: return ( Texto dentro de pantalla ); } Componente Text (textos) ************************ .. code-block:: import { StyleSheet, Text, View } from 'react-native'; export default function MainScreen() { return ( {/* Ejemplos de texto: */} Texto normal Texto seleccionable ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, });