React Native - Guía rápida
Para comprender mejor los conceptos de React Native, tomaremos prestadas algunas líneas de la documentación oficial:
React Native le permite crear aplicaciones móviles utilizando solo JavaScript. Utiliza el mismo diseño que React, lo que le permite componer una interfaz de usuario móvil enriquecida a partir de componentes declarativos. Con React Native, no crea una aplicación web móvil, una aplicación HTML5 o una aplicación híbrida; Usted crea una aplicación móvil real que no se distingue de una aplicación creada con Objective-C o Java. React Native usa los mismos bloques de construcción de UI fundamentales que las aplicaciones regulares de iOS y Android. Simplemente junta esos bloques de construcción usando JavaScript y React.
Reaccionar características nativas
Las siguientes son las características de React Native:
React - Este es un marco para crear aplicaciones web y móviles usando JavaScript.
Native - Puede utilizar componentes nativos controlados por JavaScript.
Platforms - React Native es compatible con la plataforma IOS y Android.
Ventajas de React Native
A continuación se muestran las ventajas de React Native:
JavaScript - Puede utilizar el conocimiento de JavaScript existente para crear aplicaciones móviles nativas.
Code sharing - Puede compartir la mayor parte de su código en diferentes plataformas.
Community - La comunidad alrededor de React y React Native es grande, y podrá encontrar cualquier respuesta que necesite.
Reaccionar limitaciones nativas
Las siguientes son las limitaciones de React Native:
Native Components - Si desea crear una funcionalidad nativa que aún no se creó, deberá escribir algún código específico de la plataforma.
Hay un par de cosas que necesita instalar para configurar el entorno de React Native. Usaremos OSX como nuestra plataforma de construcción.
No Señor. | Software | Descripción |
---|---|---|
1 | NodeJS y NPM | Puede seguir nuestro tutorial de configuración del entorno NodeJS para instalar NodeJS. |
Paso 1: instalar create-react-native-app
Después de instalar NodeJS y NPM correctamente en su sistema, puede continuar con la instalación de create-react-native-app (globalmente como se muestra a continuación).
C:\Users\Tutorialspoint> npm install -g create-react-native-app
Paso 2: crear proyecto
Navegue por la carpeta requerida y cree un nuevo proyecto nativo de reacción como se muestra a continuación.
C:\Users\Tutorialspoint>cd Desktop
C:\Users\Tutorialspoint\Desktop>create-react-native-app MyReactNative
Después de ejecutar el comando anterior, se crea una carpeta con un nombre específico con el siguiente contenido.
Paso 3: NodeJS Python Jdk8
Asegúrese de tener Python NodeJS y jdk8 instalados en su sistema; de lo contrario, instálelos. Además de estos, se recomienda instalar la última versión de hilo para evitar ciertos problemas.
Paso 4: Instale React Native CLI
Puede instalar la interfaz de línea de comandos nativa de react en npm, utilizando el comando install -g react-native-cli como se muestra a continuación.
npm install -g react-native-cli
Paso 5: Comience a reaccionar nativo
Para verificar la instalación, navegue por la carpeta del proyecto e intente iniciar el proyecto con el comando de inicio.
C:\Users\Tutorialspoint\Desktop>cd MyReactNative
C:\Users\Tutorialspoint\Desktop\MyReactNative>npm start
Si todo salió bien, obtendrá un código QR como se muestra a continuación.
Según las instrucciones, una forma de ejecutar aplicaciones nativas de reacción en su dispositivo Android es usar expo. Instale el cliente expo en su dispositivo Android y escanee el código QR obtenido anteriormente.
Paso 6: expulsar el proyecto
Si desea ejecutar el emulador de Android usando Android Studio, salga de la línea de comando actual presionando ctrl+c.
Luego, ejecuta ejecutar eject command como
npm run eject
Esto le indica opciones para expulsar, seleccione la primera con las flechas y presione Intro.
Luego, debe sugerir el nombre de la aplicación en la pantalla de inicio y el nombre del proyecto de los proyectos de Android Studio y Xcode.
Aunque su proyecto se expulsó correctamente, es posible que obtenga un error como:
Ignore este error y ejecute react native para Android usando el siguiente comando:
react-native run-android
Pero, antes de eso, debes instalar Android Studio.
Paso 7: Instalación de Android Studio
Visite la pagina web https://developer.android.com/studio/ y descarga Android Studio.
Después de descargar el archivo de instalación, haga doble clic en él y continúe con la instalación.
Paso 8: Configurar AVD Manager
Para configurar el AVD Manager, haga clic en el icono correspondiente en la barra de menú.
Paso 9: Configurar AVD Manager
Elija una definición de dispositivo, es recomendable Nexus 5X.
Haga clic en el botón Siguiente y verá una ventana de Imagen del sistema. Selecciona elx86 Images lengüeta.
Luego, seleccione Marshmallow y haga clic en siguiente.
Finalmente, haga clic en el botón Finalizar para finalizar la configuración de AVD.
Después de configurar su dispositivo virtual, haga clic en el botón de reproducción debajo de la columna Acciones para iniciar su emulador de Android.
Paso 10: ejecutar Android
Abra el símbolo del sistema, navegue por la carpeta de su proyecto y ejecute el react-native run-android mando.
Luego, la ejecución de la aplicación comienza en otro mensaje, puede ver su estado.
En su emulador de Android, puede ver la ejecución de la aplicación predeterminada como:
Paso 11: propiedades locales
Abre el android carpeta en la carpeta de su proyecto SampleReactNative/android(en este caso). Crea un archivo con nombrelocal.properties y agregue la siguiente ruta en él.
sdk.dir = /C:\\Users\\Tutorialspoint\\AppData\\Local\\Android\\Sdk
aquí, reemplazar Tutorialspoint con su nombre de usuario.
Paso 12: recarga en caliente
Y para crear la aplicación, modifique App.js y los cambios se actualizarán automáticamente en el emulador de Android.
Si no, haga clic en el emulador de Android presione ctrl+m luego, seleccione Enable Hot Reloading opción.
Si abre la aplicación predeterminada, puede observar que el archivo app.js se parece a
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
render() {
return (
<View style = {styles.container}>
<Text>Open up App.js to start working on your app!</Text>
<Text>Changes you make will automatically reload.</Text>
<Text>Shake your phone to open the developer menu.</Text>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
});
Salida
Hola Mundo
Para mostrar un mensaje simple que diga "Bienvenido a Tutorialspoint", elimine la parte CSS e inserte el mensaje que se imprimirá envuelto por las etiquetas <text> </text> dentro de <view> </view> como se muestra a continuación.
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
render() {
return (
<View>
<Text>Welcome to Tutorialspoint</Text>
</View>
);
}
}
Los datos dentro de React Components son administrados por state y props. En este capítulo, hablaremos sobrestate.
Diferencia entre Estado y Props
los state es mutable mientras propsson inmutables. Esto significa questate se puede actualizar en el futuro, mientras que los accesorios no se pueden actualizar.
Usando el estado
Este es nuestro componente raíz. Solo estamos importandoHome que se utilizará en la mayoría de los capítulos.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default class App extends React.Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, used do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.'
}
render() {
return (
<View>
<Text> {this.state.myState} </Text>
</View>
);
}
}
Podemos ver en el texto del emulador del estado como en la siguiente captura de pantalla.
Estado de actualización
Dado que el estado es mutable, podemos actualizarlo creando el deleteState función y llamarla usando la onPress = {this.deleteText} evento.
Home.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
class Home extends Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.'
}
updateState = () ⇒ this.setState({ myState: 'The state is updated' })
render() {
return (
<View>
<Text onPress = {this.updateState}>
{this.state.myState}
</Text>
</View>
);
}
}
export default Home;
NOTES- En todos los capítulos, usaremos la sintaxis de clase para componentes con estado (contenedor) y la sintaxis de función para componentes sin estado (presentación). Aprenderemos más sobre los componentes en el próximo capítulo.
También aprenderemos cómo usar la sintaxis de la función de flecha para updateState. Debe tener en cuenta que esta sintaxis usa el alcance léxico, ythisLa palabra clave estará vinculada al objeto de entorno (Clase). A veces, esto dará lugar a un comportamiento inesperado.
La otra forma de definir métodos es usar las funciones EC5 pero en ese caso necesitaremos enlazar thismanualmente en el constructor. Considere el siguiente ejemplo para comprender esto.
class Home extends Component {
constructor() {
super()
this.updateState = this.updateState.bind(this)
}
updateState() {
//
}
render() {
//
}
}
En nuestro último capítulo, le mostramos cómo usar mutable state. En este capítulo, le mostraremos cómo combinar el estado y elprops.
Los componentes de presentación deben obtener todos los datos pasando props. Solo los componentes del contenedor deben tenerstate.
Componente contenedor
Ahora entenderemos qué es un componente contenedor y también cómo funciona.
Teoría
Ahora actualizaremos nuestro componente contenedor. Este componente manejará el estado y pasará los accesorios al componente de presentación.
El componente contenedor solo se utiliza para el estado de manipulación. Toda la funcionalidad relacionada con la vista (estilo, etc.) se manejará en el componente de presentación.
Ejemplo
Si queremos usar el ejemplo del último capítulo, debemos eliminar el Textelemento de la función de render, ya que este elemento se utiliza para presentar texto a los usuarios. Esto debería estar dentro del componente de presentación.
Repasemos el código en el ejemplo que se muestra a continuación. Importaremos elPresentationalComponent y pasarlo a la función de render.
Después de importar el PresentationalComponenty pasarlo a la función de render, necesitamos pasar los accesorios. Pasaremos los accesorios añadiendomyText = {this.state.myText} y deleteText = {this.deleteText} a <PresentationalComponent>. Ahora, podremos acceder a esto dentro del componente de presentación.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import PresentationalComponent from './PresentationalComponent'
export default class App extends React.Component {
state = {
myState: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, used do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum.'
}
updateState = () => {
this.setState({ myState: 'The state is updated' })
}
render() {
return (
<View>
<PresentationalComponent myState = {this.state.myState} updateState = {this.updateState}/>
</View>
);
}
}
Componente de presentación
Ahora entenderemos qué es un componente de presentación y también cómo funciona.
Teoría
Los componentes de presentación deben usarse solo para presentar la vista a los usuarios. Estos componentes no tienen estado. Reciben todos los datos y funciones como accesorios.
La mejor práctica es utilizar tantos componentes de presentación como sea posible.
Ejemplo
Como mencionamos en nuestro capítulo anterior, estamos usando la sintaxis de función EC6 para componentes de presentación.
Nuestro componente recibirá accesorios, devolverá elementos de vista, presentará texto usando {props.myText} y llama al {props.deleteText} función cuando un usuario hace clic en el texto.
PresentationalComponent.js
import React, { Component } from 'react'
import { Text, View } from 'react-native'
const PresentationalComponent = (props) => {
return (
<View>
<Text onPress = {props.updateState}>
{props.myState}
</Text>
</View>
)
}
export default PresentationalComponent
Ahora, tenemos la misma funcionalidad que en nuestro Statecapítulo. La única diferencia es que refactorizamos nuestro código al contenedor y al componente de presentación.
Puede ejecutar la aplicación y ver el texto como en la siguiente captura de pantalla.
Si hace clic en el texto, se eliminará de la pantalla.
Hay un par de formas de diseñar sus elementos en React Native.
Puedes usar el stylepropiedad para agregar los estilos en línea. Sin embargo, esta no es la mejor práctica porque puede ser difícil leer el código.
En este capítulo, usaremos el Stylesheet para peinar.
Componente contenedor
En esta sección, simplificaremos nuestro componente contenedor de nuestro capítulo anterior.
App.js
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import PresentationalComponent from './PresentationalComponent'
export default class App extends React.Component {
state = {
myState: 'This is my state'
}
render() {
return (
<View>
<PresentationalComponent myState = {this.state.myState}/>
</View>
);
}
}
Componente de presentación
En el siguiente ejemplo, importaremos el StyleSheet. En la parte inferior del archivo, crearemos nuestra hoja de estilo y la asignaremos alstylesconstante. Tenga en cuenta que nuestros estilos están encamelCase y no usamos px o% para peinar.
Para aplicar estilos a nuestro texto, necesitamos agregar style = {styles.myText} propiedad a la Text elemento.
PresentationalComponent.js
import React, { Component } from 'react'
import { Text, View, StyleSheet } from 'react-native'
const PresentationalComponent = (props) => {
return (
<View>
<Text style = {styles.myState}>
{props.myState}
</Text>
</View>
)
}
export default PresentationalComponent
const styles = StyleSheet.create ({
myState: {
marginTop: 20,
textAlign: 'center',
color: 'blue',
fontWeight: 'bold',
fontSize: 20
}
})
Cuando ejecutamos la aplicación, recibiremos el siguiente resultado.
Para adaptarse a diferentes tamaños de pantalla, React Native ofrece Flexbox apoyo.
Usaremos el mismo código que usamos en nuestro React Native - Stylingcapítulo. Solo cambiaremos elPresentationalComponent.
Diseño
Para lograr el diseño deseado, flexbox ofrece tres propiedades principales: flexDirection justifyContent y alignItems.
La siguiente tabla muestra las posibles opciones.
Propiedad | Valores | Descripción |
---|---|---|
flexDirection | 'columna', 'fila' | Se utiliza para especificar si los elementos se alinearán vertical u horizontalmente. |
justifyContent | 'centro', 'flex-start', 'flex-end', 'space-around', 'space-between' | Se utiliza para determinar cómo se deben distribuir los elementos dentro del contenedor. |
alignItems | 'centro', 'inicio flexible', 'extremo flexible', 'estirado' | Se usa para determinar cómo se deben distribuir los elementos dentro del contenedor a lo largo del eje secundario (opuesto a flexDirection) |
Si desea alinear los elementos verticalmente y centralizarlos, puede usar el siguiente código.
App.js
import React, { Component } from 'react'
import { View, StyleSheet } from 'react-native'
const Home = (props) => {
return (
<View style = {styles.container}>
<View style = {styles.redbox} />
<View style = {styles.bluebox} />
<View style = {styles.blackbox} />
</View>
)
}
export default Home
const styles = StyleSheet.create ({
container: {
flexDirection: 'column',
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'grey',
height: 600
},
redbox: {
width: 100,
height: 100,
backgroundColor: 'red'
},
bluebox: {
width: 100,
height: 100,
backgroundColor: 'blue'
},
blackbox: {
width: 100,
height: 100,
backgroundColor: 'black'
},
})
Output
Si los elementos deben moverse al lado derecho y deben agregarse espacios entre ellos, entonces podemos usar el siguiente código.
App.js
import React, { Component } from 'react'
import { View, StyleSheet } from 'react-native'
const App = (props) => {
return (
<View style = {styles.container}>
<View style = {styles.redbox} />
<View style = {styles.bluebox} />
<View style = {styles.blackbox} />
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
flexDirection: 'column',
justifyContent: 'space-between',
alignItems: 'flex-end',
backgroundColor: 'grey',
height: 600
},
redbox: {
width: 100,
height: 100,
backgroundColor: 'red'
},
bluebox: {
width: 100,
height: 100,
backgroundColor: 'blue'
},
blackbox: {
width: 100,
height: 100,
backgroundColor: 'black'
},
})
En este capítulo, le mostraremos cómo crear una lista en React Native. Nosotros importaremosList en nuestro Home componente y mostrarlo en la pantalla.
App.js
import React from 'react'
import List from './List.js'
const App = () => {
return (
<List />
)
}
export default App
Para crear una lista, usaremos el map()método. Esto iterará sobre una matriz de elementos y renderizará cada uno.
List.js
import React, { Component } from 'react'
import { Text, View, TouchableOpacity, StyleSheet } from 'react-native'
class List extends Component {
state = {
names: [
{
id: 0,
name: 'Ben',
},
{
id: 1,
name: 'Susan',
},
{
id: 2,
name: 'Robert',
},
{
id: 3,
name: 'Mary',
}
]
}
alertItemName = (item) => {
alert(item.name)
}
render() {
return (
<View>
{
this.state.names.map((item, index) => (
<TouchableOpacity
key = {item.id}
style = {styles.container}
onPress = {() => this.alertItemName(item)}>
<Text style = {styles.text}>
{item.name}
</Text>
</TouchableOpacity>
))
}
</View>
)
}
}
export default List
const styles = StyleSheet.create ({
container: {
padding: 10,
marginTop: 3,
backgroundColor: '#d9f9b1',
alignItems: 'center',
},
text: {
color: '#4f603c'
}
})
Cuando ejecutamos la aplicación, veremos la lista de nombres.
Puede hacer clic en cada elemento de la lista para activar una alerta con el nombre.
En este capítulo, le mostraremos cómo trabajar con TextInput elementos en React Native.
El componente Inicio importará y renderizará entradas.
App.js
import React from 'react';
import Inputs from './inputs.js'
const App = () => {
return (
<Inputs />
)
}
export default App
Entradas
Definiremos el estado inicial.
Después de definir el estado inicial, crearemos el handleEmail y el handlePasswordfunciones. Estas funciones se utilizan para actualizar el estado.
los login() La función solo alertará sobre el valor actual del estado.
También agregaremos algunas otras propiedades a las entradas de texto para deshabilitar las mayúsculas automáticas, eliminar el borde inferior en los dispositivos Android y establecer un marcador de posición.
inputs.js
import React, { Component } from 'react'
import { View, Text, TouchableOpacity, TextInput, StyleSheet } from 'react-native'
class Inputs extends Component {
state = {
email: '',
password: ''
}
handleEmail = (text) => {
this.setState({ email: text })
}
handlePassword = (text) => {
this.setState({ password: text })
}
login = (email, pass) => {
alert('email: ' + email + ' password: ' + pass)
}
render() {
return (
<View style = {styles.container}>
<TextInput style = {styles.input}
underlineColorAndroid = "transparent"
placeholder = "Email"
placeholderTextColor = "#9a73ef"
autoCapitalize = "none"
onChangeText = {this.handleEmail}/>
<TextInput style = {styles.input}
underlineColorAndroid = "transparent"
placeholder = "Password"
placeholderTextColor = "#9a73ef"
autoCapitalize = "none"
onChangeText = {this.handlePassword}/>
<TouchableOpacity
style = {styles.submitButton}
onPress = {
() => this.login(this.state.email, this.state.password)
}>
<Text style = {styles.submitButtonText}> Submit </Text>
</TouchableOpacity>
</View>
)
}
}
export default Inputs
const styles = StyleSheet.create({
container: {
paddingTop: 23
},
input: {
margin: 15,
height: 40,
borderColor: '#7a42f4',
borderWidth: 1
},
submitButton: {
backgroundColor: '#7a42f4',
padding: 10,
margin: 15,
height: 40,
},
submitButtonText:{
color: 'white'
}
})
Siempre que escribimos en uno de los campos de entrada, el estado se actualizará. Cuando hacemos clic en elSubmit , el texto de las entradas se mostrará dentro del cuadro de diálogo.
Siempre que escribimos en uno de los campos de entrada, el estado se actualizará. Cuando hacemos clic en elSubmit , el texto de las entradas se mostrará dentro del cuadro de diálogo.
En este capítulo, le mostraremos cómo trabajar con ScrollView elemento.
Volveremos a crear ScrollViewExample.js e importarlo en Home.
App.js
import React from 'react';
import ScrollViewExample from './scroll_view.js';
const App = () => {
return (
<ScrollViewExample />
)
}export default App
Scrollview mostrará una lista de nombres. Lo crearemos en estado.
ScrollView.js
import React, { Component } from 'react';
import { Text, Image, View, StyleSheet, ScrollView } from 'react-native';
class ScrollViewExample extends Component {
state = {
names: [
{'name': 'Ben', 'id': 1},
{'name': 'Susan', 'id': 2},
{'name': 'Robert', 'id': 3},
{'name': 'Mary', 'id': 4},
{'name': 'Daniel', 'id': 5},
{'name': 'Laura', 'id': 6},
{'name': 'John', 'id': 7},
{'name': 'Debra', 'id': 8},
{'name': 'Aron', 'id': 9},
{'name': 'Ann', 'id': 10},
{'name': 'Steve', 'id': 11},
{'name': 'Olivia', 'id': 12}
]
}
render() {
return (
<View>
<ScrollView>
{
this.state.names.map((item, index) => (
<View key = {item.id} style = {styles.item}>
<Text>{item.name}</Text>
</View>
))
}
</ScrollView>
</View>
)
}
}
export default ScrollViewExample
const styles = StyleSheet.create ({
item: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
padding: 30,
margin: 2,
borderColor: '#2a4944',
borderWidth: 1,
backgroundColor: '#d2f7f1'
}
})
Cuando ejecutamos la aplicación, veremos la lista desplazable de nombres.
En este capítulo, entenderemos cómo trabajar con imágenes en React Native.
Agregar imagen
Creemos una nueva carpeta img dentro de srccarpeta. Agregaremos nuestra imagen (myImage.png) dentro de esta carpeta.
Mostraremos imágenes en la pantalla de inicio.
App.js
import React from 'react';
import ImagesExample from './ImagesExample.js'
const App = () => {
return (
<ImagesExample />
)
}
export default App
Se puede acceder a la imagen local utilizando la siguiente sintaxis.
image_example.js
import React, { Component } from 'react'
import { Image } from 'react-native'
const ImagesExample = () => (
<Image source = {require('C:/Users/Tutorialspoint/Desktop/NativeReactSample/logo.png')} />
)
export default ImagesExample
Salida
Densidad de pantalla
React Native ofrece una forma de optimizar imágenes para diferentes dispositivos usando @2x, @3xsufijo. La aplicación cargará solo la imagen necesaria para una densidad de pantalla particular.
Los siguientes serán los nombres de la imagen dentro del img carpeta.
[email protected]
[email protected]
Imágenes de red
Al usar imágenes de red, en lugar de require, Necesitamos el sourcepropiedad. Se recomienda definir elwidth y el height para imágenes de red.
App.js
import React from 'react';
import ImagesExample from './image_example.js'
const App = () => {
return (
<ImagesExample />
)
}
export default App
image_example.js
import React, { Component } from 'react'
import { View, Image } from 'react-native'
const ImagesExample = () => (
<Image source = {{uri:'https://pbs.twimg.com/profile_images/486929358120964097/gNLINY67_400x400.png'}}
style = {{ width: 200, height: 200 }}
/>
)
export default ImagesExample
Salida
En este capítulo, le mostraremos cómo usar fetch para manejar solicitudes de red.
App.js
import React from 'react';
import HttpExample from './http_example.js'
const App = () => {
return (
<HttpExample />
)
}
export default App
Usando Fetch
Usaremos el componentDidMountmétodo de ciclo de vida para cargar los datos desde el servidor tan pronto como se monte el componente. Esta función enviará una solicitud GET al servidor, devolverá datos JSON, registrará la salida en la consola y actualizará nuestro estado.
http_example.js
import React, { Component } from 'react'
import { View, Text } from 'react-native'
class HttpExample extends Component {
state = {
data: ''
}
componentDidMount = () => {
fetch('https://jsonplaceholder.typicode.com/posts/1', {
method: 'GET'
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
this.setState({
data: responseJson
})
})
.catch((error) => {
console.error(error);
});
}
render() {
return (
<View>
<Text>
{this.state.data.body}
</Text>
</View>
)
}
}
export default HttpExample
Salida
En este capítulo, le mostraremos los componentes que se pueden tocar en react Native. Los llamamos 'tocables' porque ofrecen animaciones integradas y podemos usar elonPress prop para el manejo del evento táctil.
Facebook ofrece el Buttoncomponente, que se puede utilizar como botón genérico. Considere el siguiente ejemplo para entender lo mismo.
App.js
import React, { Component } from 'react'
import { Button } from 'react-native'
const App = () => {
const handlePress = () => false
return (
<Button
onPress = {handlePress}
title = "Red button!"
color = "red"
/>
)
}
export default App
Si el valor predeterminado Button componente no se adapta a sus necesidades, puede utilizar uno de los siguientes componentes en su lugar.
Opacidad táctil
Este elemento cambiará la opacidad de un elemento cuando se toca.
App.js
import React from 'react'
import { TouchableOpacity, StyleSheet, View, Text } from 'react-native'
const App = () => {
return (
<View style = {styles.container}>
<TouchableOpacity>
<Text style = {styles.text}>
Button
</Text>
</TouchableOpacity>
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Resaltado táctil
Cuando un usuario presiona el elemento, se oscurecerá y se mostrará el color subyacente.
App.js
import React from 'react'
import { View, TouchableHighlight, Text, StyleSheet } from 'react-native'
const App = (props) => {
return (
<View style = {styles.container}>
<TouchableHighlight>
<Text style = {styles.text}>
Button
</Text>
</TouchableHighlight>
</View>
)
}
export default App
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Comentarios nativos que se pueden tocar
Esto simulará la animación de tinta cuando se presione el elemento.
App.js
import React from 'react'
import { View, TouchableNativeFeedback, Text, StyleSheet } from 'react-native'
const Home = (props) => {
return (
<View style = {styles.container}>
<TouchableNativeFeedback>
<Text style = {styles.text}>
Button
</Text>
</TouchableNativeFeedback>
</View>
)
}
export default Home
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
},
text: {
borderWidth: 1,
padding: 25,
borderColor: 'black',
backgroundColor: 'red'
}
})
Tocable sin comentarios
Esto debe usarse cuando desee manejar el evento táctil sin ninguna animación. Por lo general, este componente no se usa mucho.
<TouchableWithoutFeedback>
<Text>
Button
</Text>
</TouchableWithoutFeedback>
En este capítulo, le mostraremos cómo usar LayoutAnimation en React Native.
Componente de animaciones
Nosotros estableceremos myStylecomo propiedad del estado. Esta propiedad se usa para diseñar un elemento dentroPresentationalAnimationComponent.
También crearemos dos funciones: expandElement y collapseElement. Estas funciones actualizarán los valores del estado. El primero usará elspring animación preestablecida mientras que el segundo tendrá la linearPreestablecido. También los pasaremos como accesorios. losExpand y el Collapse botones llaman al expandElement() y collapseElement() funciones.
En este ejemplo, cambiaremos dinámicamente el ancho y el alto de la caja. Desde elHome El componente será el mismo, solo cambiaremos el Animations componente.
App.js
import React, { Component } from 'react'
import { View, StyleSheet, Animated, TouchableOpacity } from 'react-native'
class Animations extends Component {
componentWillMount = () => {
this.animatedWidth = new Animated.Value(50)
this.animatedHeight = new Animated.Value(100)
}
animatedBox = () => {
Animated.timing(this.animatedWidth, {
toValue: 200,
duration: 1000
}).start()
Animated.timing(this.animatedHeight, {
toValue: 500,
duration: 500
}).start()
}
render() {
const animatedStyle = { width: this.animatedWidth, height: this.animatedHeight }
return (
<TouchableOpacity style = {styles.container} onPress = {this.animatedBox}>
<Animated.View style = {[styles.box, animatedStyle]}/>
</TouchableOpacity>
)
}
}
export default Animations
const styles = StyleSheet.create({
container: {
justifyContent: 'center',
alignItems: 'center'
},
box: {
backgroundColor: 'blue',
width: 50,
height: 100
}
})
React native ofrece un par de métodos que ayudan a depurar su código.
En el menú del desarrollador de aplicaciones
Puede abrir el menú de desarrollador en el simulador de IOS presionando command + D.
En el emulador de Android, debes presionar command + M.
Reload- Utilizado para recargar simulador. Puedes usar atajocommand + R
Debug JS Remotely - Se utiliza para activar la depuración dentro de la consola del desarrollador del navegador.
Enable Live Reload- Se utiliza para habilitar la recarga en vivo cada vez que se guarda su código. El depurador se abrirá enlocalhost:8081/debugger-ui.
Start Systrace - Se utiliza para iniciar la herramienta de creación de perfiles basada en marcadores de Android.
Show Inspector- Se utiliza para abrir el inspector donde puede encontrar información sobre sus componentes. Puedes usar atajocommand + I
Show Perf Monitor - El monitor de rendimiento se utiliza para realizar un seguimiento del rendimiento de su aplicación.
En este capítulo, entenderemos la navegación en React Native.
Paso 1: Instale el enrutador
Para empezar, necesitamos instalar el Router. Usaremos React Native Router Flux en este capítulo. Puede ejecutar el siguiente comando en la terminal, desde la carpeta del proyecto.
npm i react-native-router-flux --save
Paso 2: Solicitud completa
Como queremos que nuestro enrutador maneje toda la aplicación, lo agregaremos index.ios.js. Para Android, puede hacer lo mismo enindex.android.js.
App.js
import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';
import Routes from './Routes.js'
class reactTutorialApp extends Component {
render() {
return (
<Routes />
)
}
}
export default reactTutorialApp
AppRegistry.registerComponent('reactTutorialApp', () => reactTutorialApp)
Paso 3: agregar enrutador
Ahora crearemos el Routescomponente dentro de la carpeta de componentes. VolveráRoutercon varias escenas. Cada escena necesitarákey, component y title. El enrutador usa la propiedad de la clave para cambiar entre escenas, el componente se representará en la pantalla y el título se mostrará en la barra de navegación. También podemos configurar elinitial propiedad a la escena que se va a renderizar inicialmente.
Routes.js
import React from 'react'
import { Router, Scene } from 'react-native-router-flux'
import Home from './Home.js'
import About from './About.js'
const Routes = () => (
<Router>
<Scene key = "root">
<Scene key = "home" component = {Home} title = "Home" initial = {true} />
<Scene key = "about" component = {About} title = "About" />
</Scene>
</Router>
)
export default Routes
Paso 4: crear componentes
Ya tenemos el Homecomponente de capítulos anteriores; ahora, necesitamos agregar elAboutcomponente. Agregaremos elgoToAbout y el goToHome funciones para cambiar entre escenas.
Home.js
import React from 'react'
import { TouchableOpacity, Text } from 'react-native';
import { Actions } from 'react-native-router-flux';
const Home = () => {
const goToAbout = () => {
Actions.about()
}
return (
<TouchableOpacity style = {{ margin: 128 }} onPress = {goToAbout}>
<Text>This is HOME!</Text>
</TouchableOpacity>
)
}
export default Home
Acerca de.js
import React from 'react'
import { TouchableOpacity, Text } from 'react-native'
import { Actions } from 'react-native-router-flux'
const About = () => {
const goToHome = () => {
Actions.home()
}
return (
<TouchableOpacity style = {{ margin: 128 }} onPress = {goToHome}>
<Text>This is ABOUT</Text>
</TouchableOpacity>
)
}
export default About
La aplicación representará la inicial Home pantalla.
Puede presionar el botón para cambiar a la pantalla Acerca de. Aparecerá la flecha hacia atrás; puede utilizarlo para volver a la pantalla anterior.
Si desea probar su aplicación en el simulador de IOS, todo lo que necesita es abrir la carpeta raíz de su aplicación en la terminal y ejecutar -
react-native run-ios
El comando anterior iniciará el simulador y ejecutará la aplicación.
También podemos especificar el dispositivo que queremos usar.
react-native run-ios --simulator "iPhone 5s
Después de abrir la aplicación en el simulador, puede presionar command + Den IOS para abrir el menú de desarrolladores. Puede consultar más sobre esto en nuestrodebugging capítulo.
También puede recargar el simulador IOS presionando command + R.
Podemos ejecutar la aplicación React Native en la plataforma Android ejecutando el siguiente código en la terminal.
react-native run-android
Antes de poder ejecutar su aplicación en un dispositivo Android, debe habilitar USB Debugging dentro de Developer Options.
Cuando USB Debugging está habilitado, puede conectar su dispositivo y ejecutar el fragmento de código proporcionado anteriormente.
El emulador nativo de Android es lento. Recomendamos descargar Genymotion para probar su aplicación.
Se puede acceder al menú de desarrollador presionando command + M.
La vista es el elemento más común en React Native. Puede considerarlo como un equivalente deldiv elemento utilizado en el desarrollo web.
Casos de uso
Veamos ahora algunos casos de uso comunes.
Cuando necesite envolver sus elementos dentro del contenedor, puede usar View como elemento contenedor.
Cuando desee anidar más elementos dentro del elemento principal, tanto el elemento principal como el secundario pueden View. Puede tener tantos hijos como quieras.
Cuando desee diseñar diferentes elementos, puede colocarlos dentro View ya que apoya style propiedad, flexbox etc.
View también admite eventos táctiles sintéticos, que pueden ser útiles para diferentes propósitos.
Ya usamos Viewen nuestros capítulos anteriores y lo usaremos en casi todos los capítulos posteriores también. losViewse puede asumir como un elemento predeterminado en React Native. En el ejemplo que se muestra a continuación, anidaremos dos Vistas y un texto.
App.js
import React, { Component } from 'react'
import { View, Text } from 'react-native'
const App = () => {
return (
<View>
<View>
<Text>This is my text</Text>
</View>
</View>
)
}
export default App
Salida
En este capítulo, aprenderemos a usar WebView. Se utiliza cuando desea representar una página web en su aplicación móvil en línea.
Usando WebView
los HomeContainer será un componente contenedor.
App.js
import React, { Component } from 'react'
import WebViewExample from './web_view_example.js'
const App = () => {
return (
<WebViewExample/>
)
}
export default App;
Creemos un nuevo archivo llamado WebViewExample.js dentro de src/components/home carpeta.
web_view_example.js
import React, { Component } from 'react'
import { View, WebView, StyleSheet }
from 'react-native'
const WebViewExample = () => {
return (
<View style = {styles.container}>
<WebView
source = {{ uri:
'https://www.google.com/?gws_rd=cr,ssl&ei=SICcV9_EFqqk6ASA3ZaABA#q=tutorialspoint' }}
/>
</View>
)
}
export default WebViewExample;
const styles = StyleSheet.create({
container: {
height: 350,
}
})
El programa anterior generará la siguiente salida.
En este capítulo, le mostraremos cómo usar el componente modal en React Native.
Creemos ahora un nuevo archivo: ModalExample.js
Pondremos lógica dentro ModalExample. Podemos actualizar el estado inicial ejecutando eltoggleModal.
Después de actualizar el estado inicial ejecutando el toggleModal, estableceremos el visiblepropiedad a nuestro modal. Este accesorio se actualizará cuando cambie el estado.
los onRequestClose es necesario para dispositivos Android.
App.js
import React, { Component } from 'react'
import WebViewExample from './modal_example.js'
const Home = () => {
return (
<WebViewExample/>
)
}
export default Home;
modal_example.js
import React, { Component } from 'react';
import { Modal, Text, TouchableHighlight, View, StyleSheet}
from 'react-native'
class ModalExample extends Component {
state = {
modalVisible: false,
}
toggleModal(visible) {
this.setState({ modalVisible: visible });
}
render() {
return (
<View style = {styles.container}>
<Modal animationType = {"slide"} transparent = {false}
visible = {this.state.modalVisible}
onRequestClose = {() => { console.log("Modal has been closed.") } }>
<View style = {styles.modal}>
<Text style = {styles.text}>Modal is open!</Text>
<TouchableHighlight onPress = {() => {
this.toggleModal(!this.state.modalVisible)}}>
<Text style = {styles.text}>Close Modal</Text>
</TouchableHighlight>
</View>
</Modal>
<TouchableHighlight onPress = {() => {this.toggleModal(true)}}>
<Text style = {styles.text}>Open Modal</Text>
</TouchableHighlight>
</View>
)
}
}
export default ModalExample
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
backgroundColor: '#ede3f2',
padding: 100
},
modal: {
flex: 1,
alignItems: 'center',
backgroundColor: '#f7021a',
padding: 100
},
text: {
color: '#3f2949',
marginTop: 10
}
})
Nuestra pantalla de inicio se verá así:
Si hacemos clic en el botón, se abrirá el modal.
En este capítulo, le mostraremos cómo usar el indicador de actividad en React Native.
Paso 1: aplicación
App se utilizará para importar y mostrar nuestro ActivityIndicator.
App.js
import React from 'react'
import ActivityIndicatorExample from './activity_indicator_example.js'
const Home = () => {
return (
<ActivityIndicatorExample />
)
}
export default Home
Paso 2: Ejemplo de indicador de actividad
La propiedad de animación es un booleano que se utiliza para mostrar el indicador de actividad. Este último se cierra seis segundos después de que se monta el componente. Esto se hace usando elcloseActivityIndicator() función.
activity_indicator_example.js
import React, { Component } from 'react';
import { ActivityIndicator, View, Text, TouchableOpacity, StyleSheet } from 'react-native';
class ActivityIndicatorExample extends Component {
state = { animating: true }
closeActivityIndicator = () => setTimeout(() => this.setState({
animating: false }), 60000)
componentDidMount = () => this.closeActivityIndicator()
render() {
const animating = this.state.animating
return (
<View style = {styles.container}>
<ActivityIndicator
animating = {animating}
color = '#bc2b78'
size = "large"
style = {styles.activityIndicator}/>
</View>
)
}
}
export default ActivityIndicatorExample
const styles = StyleSheet.create ({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
marginTop: 70
},
activityIndicator: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
height: 80
}
})
Cuando ejecutamos la aplicación, veremos el cargador en pantalla. Desaparecerá después de seis segundos.
En este capítulo, crearemos un Selector simple con dos opciones disponibles.
Paso 1: crear archivo
Aquí el App.js La carpeta se utilizará como componente de presentación.
App.js
import React from 'react'
import PickerExample from './PickerExample.js'
const App = () => {
return (
<PickerExample />
)
}
export default App
Paso 2: Lógica
this.state.user se utiliza para el control del selector.
los updateUser La función se activará cuando se seleccione un usuario.
PickerExample.js
import React, { Component } from 'react';
import { View, Text, Picker, StyleSheet } from 'react-native'
class PickerExample extends Component {
state = {user: ''}
updateUser = (user) => {
this.setState({ user: user })
}
render() {
return (
<View>
<Picker selectedValue = {this.state.user} onValueChange = {this.updateUser}>
<Picker.Item label = "Steve" value = "steve" />
<Picker.Item label = "Ellen" value = "ellen" />
<Picker.Item label = "Maria" value = "maria" />
</Picker>
<Text style = {styles.text}>{this.state.user}</Text>
</View>
)
}
}
export default PickerExample
const styles = StyleSheet.create({
text: {
fontSize: 30,
alignSelf: 'center',
color: 'red'
}
})
Salida
Si hace clic en el nombre, se le mostrarán las tres opciones como:
Y puede elegir uno de ellos y la salida será como.
En este capítulo, le mostraremos cómo controlar la apariencia de la barra de estado en React Native.
La barra de estado es fácil de usar y todo lo que necesita hacer es establecer propiedades para cambiarla.
los hiddenLa propiedad se puede utilizar para ocultar la barra de estado. En nuestro ejemplo, se establece enfalse. Este es el valor predeterminado.
los barStyle puede tener tres valores - dark-content, light-content y default.
Este componente tiene varias otras propiedades que se pueden utilizar. Algunos de ellos son específicos de Android o IOS. Puedes consultarlo en documentación oficial.
App.js
import React, { Component } from 'react';
import { StatusBar } from 'react-native'
const App = () => {
return (
<StatusBar barStyle = "dark-content" hidden = {false} backgroundColor = "#00BCD4" translucent = {true}/>
)
}
export default App
Si ejecutamos la aplicación, la barra de estado será visible y el contenido tendrá un color oscuro.
Salida
En este capítulo, explicaremos el Switch componente en un par de pasos.
Paso 1: crear archivo
Usaremos el HomeContainer componente para la lógica, pero necesitamos crear el componente de presentación.
Creemos ahora un nuevo archivo: SwitchExample.js.
Paso 2: Lógica
Estamos pasando valor desde el state y funciones para alternar los elementos del interruptor SwitchExamplecomponente. Las funciones de alternancia se utilizarán para actualizar el estado.
App.js
import React, { Component } from 'react'
import { View } from 'react-native'
import SwitchExample from './switch_example.js'
export default class HomeContainer extends Component {
constructor() {
super();
this.state = {
switch1Value: false,
}
}
toggleSwitch1 = (value) => {
this.setState({switch1Value: value})
console.log('Switch 1 is: ' + value)
}
render() {
return (
<View>
<SwitchExample
toggleSwitch1 = {this.toggleSwitch1}
switch1Value = {this.state.switch1Value}/>
</View>
);
}
}
Paso 3: presentación
El componente de cambio requiere dos accesorios. losonValueChangeprop activará nuestras funciones de alternancia después de que un usuario presione el interruptor. losvalue prop está vinculado al estado de la HomeContainer componente.
switch_example.js
import React, { Component } from 'react'
import { View, Switch, StyleSheet }
from 'react-native'
export default SwitchExample = (props) => {
return (
<View style = {styles.container}>
<Switch
onValueChange = {props.toggleSwitch1}
value = {props.switch1Value}/>
</View>
)
}
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 100
}
})
Si presionamos el interruptor, el estado se actualizará. Puede verificar los valores en la consola.
Salida
En este capítulo, hablaremos sobre Text componente en React Native.
Este componente se puede anidar y puede heredar propiedades de padre a hijo. Esto puede resultar útil de muchas formas. Le mostraremos un ejemplo de uso de mayúsculas en la primera letra, estilo de palabras o partes del texto, etc.
Paso 1: crear archivo
El archivo que vamos a crear es text_example.js
Paso 2: App.js
En este paso, crearemos un contenedor simple.
App.js
import React, { Component } from 'react'
import TextExample from './text_example.js'
const App = () => {
return (
<TextExample/>
)
}
export default App
Paso 3: texto
En este paso, usaremos el patrón de herencia. styles.text se aplicará a todos Text componentes.
También puede observar cómo establecemos otras propiedades de estilo en algunas partes del texto. Es importante saber que a todos los elementos secundarios se les han pasado estilos principales.
text_example.js
import React, { Component } from 'react';
import { View, Text, Image, StyleSheet } from 'react-native'
const TextExample = () => {
return (
<View style = {styles.container}>
<Text style = {styles.text}>
<Text style = {styles.capitalLetter}>
L
</Text>
<Text>
orem ipsum dolor sit amet, sed do eiusmod.
</Text>
<Text>
Ut enim ad <Text style = {styles.wordBold}>minim </Text> veniam,
quis aliquip ex ea commodo consequat.
</Text>
<Text style = {styles.italicText}>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum.
</Text>
<Text style = {styles.textShadow}>
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
</Text>
</Text>
</View>
)
}
export default TextExample
const styles = StyleSheet.create ({
container: {
alignItems: 'center',
marginTop: 100,
padding: 20
},
text: {
color: '#41cdf4',
},
capitalLetter: {
color: 'red',
fontSize: 20
},
wordBold: {
fontWeight: 'bold',
color: 'black'
},
italicText: {
color: '#37859b',
fontStyle: 'italic'
},
textShadow: {
textShadowColor: 'red',
textShadowOffset: { width: 2, height: 2 },
textShadowRadius : 5
}
})
Recibirá el siguiente resultado:
En este capítulo, entenderemos cómo crear Alert componente.
Paso 1: App.js
import React from 'react'
import AlertExample from './alert_example.js'
const App = () => {
return (
<AlertExample />
)
}
export default App
Paso 2: alert_example.js
Crearemos un botón para activar el showAlert función.
import React from 'react'
import { Alert, Text, TouchableOpacity, StyleSheet } from 'react-native'
const AlertExample = () => {
const showAlert = () =>{
Alert.alert(
'You need to...'
)
}
return (
<TouchableOpacity onPress = {showAlert} style = {styles.button}>
<Text>Alert</Text>
</TouchableOpacity>
)
}
export default AlertExample
const styles = StyleSheet.create ({
button: {
backgroundColor: '#4ba37b',
width: 100,
borderRadius: 50,
alignItems: 'center',
marginTop: 100
}
})
Salida
Cuando haga clic en el botón, verá lo siguiente:
En este capítulo, le mostraremos cómo usar Geolocation.
Paso 1: App.js
import React from 'react'
import GeolocationExample from './geolocation_example.js'
const App = () => {
return (
<GeolocationExample />
)
}
export default App
Paso 2: geolocalización
Comenzaremos configurando el estado inicial para que mantendrá la posición inicial y la última.
Ahora, necesitamos obtener la posición actual del dispositivo cuando se monta un componente usando el navigator.geolocation.getCurrentPosition. Cadenaizaremos la respuesta para que podamos actualizar el estado.
navigator.geolocation.watchPositionse utiliza para rastrear la posición de los usuarios. También aclaramos a los observadores en este paso.
AsyncStorageExample.js
import React, { Component } from 'react'
import { View, Text, Switch, StyleSheet} from 'react-native'
class SwichExample extends Component {
state = {
initialPosition: 'unknown',
lastPosition: 'unknown',
}
watchID: ?number = null;
componentDidMount = () => {
navigator.geolocation.getCurrentPosition(
(position) => {
const initialPosition = JSON.stringify(position);
this.setState({ initialPosition });
},
(error) => alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
this.watchID = navigator.geolocation.watchPosition((position) => {
const lastPosition = JSON.stringify(position);
this.setState({ lastPosition });
});
}
componentWillUnmount = () => {
navigator.geolocation.clearWatch(this.watchID);
}
render() {
return (
<View style = {styles.container}>
<Text style = {styles.boldText}>
Initial position:
</Text>
<Text>
{this.state.initialPosition}
</Text>
<Text style = {styles.boldText}>
Current position:
</Text>
<Text>
{this.state.lastPosition}
</Text>
</View>
)
}
}
export default SwichExample
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 50
},
boldText: {
fontSize: 30,
color: 'red',
}
})
En este capítulo, le mostraremos cómo conservar sus datos utilizando AsyncStorage.
Paso 1: presentación
En este paso, crearemos el App.js archivo.
import React from 'react'
import AsyncStorageExample from './async_storage_example.js'
const App = () => {
return (
<AsyncStorageExample />
)
}
export default App
Paso 2: Lógica
Namedesde el estado inicial es una cadena vacía. Lo actualizaremos desde el almacenamiento persistente cuando se monte el componente.
setName tomará el texto de nuestro campo de entrada, lo guardará usando AsyncStorage y actualizar el estado.
async_storage_example.js
import React, { Component } from 'react'
import { StatusBar } from 'react-native'
import { AsyncStorage, Text, View, TextInput, StyleSheet } from 'react-native'
class AsyncStorageExample extends Component {
state = {
'name': ''
}
componentDidMount = () => AsyncStorage.getItem('name').then((value) => this.setState({ 'name': value }))
setName = (value) => {
AsyncStorage.setItem('name', value);
this.setState({ 'name': value });
}
render() {
return (
<View style = {styles.container}>
<TextInput style = {styles.textInput} autoCapitalize = 'none'
onChangeText = {this.setName}/>
<Text>
{this.state.name}
</Text>
</View>
)
}
}
export default AsyncStorageExample
const styles = StyleSheet.create ({
container: {
flex: 1,
alignItems: 'center',
marginTop: 50
},
textInput: {
margin: 5,
height: 100,
borderWidth: 1,
backgroundColor: '#7685ed'
}
})
Cuando ejecutamos la aplicación, podemos actualizar el texto escribiendo en el campo de entrada.