En aquest tema, aprendrem com gestionar l'entrada de l'usuari en una aplicació React Native. Això inclou l'ús de components com TextInput per capturar text, així com la gestió d'esdeveniments per respondre a les accions de l'usuari.
Objectius
- Comprendre com utilitzar el component
TextInput. - Aprendre a gestionar esdeveniments d'entrada de l'usuari.
- Implementar un formulari bàsic amb validació.
Components d'entrada bàsics
TextInput
El component TextInput és utilitzat per capturar text de l'usuari. Aquí tens un exemple bàsic:
import React, { useState } from 'react';
import { View, TextInput, Text, StyleSheet } from 'react-native';
const UserInputExample = () => {
const [text, setText] = useState('');
return (
<View style={styles.container}>
<TextInput
style={styles.input}
placeholder="Escriu aquí"
onChangeText={setText}
value={text}
/>
<Text style={styles.text}>Has escrit: {text}</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
padding: 20,
},
input: {
height: 40,
borderColor: 'gray',
borderWidth: 1,
marginBottom: 10,
paddingHorizontal: 10,
},
text: {
fontSize: 18,
},
});
export default UserInputExample;Explicació del codi
- Importacions: Importem els components necessaris de React i React Native.
- useState: Utilitzem el hook
useStateper gestionar l'estat del text introduït. - TextInput: El component
TextInputté diverses propietats:style: Defineix l'estil del component.placeholder: Mostra un text per defecte quan el camp està buit.onChangeText: Funció que s'executa cada vegada que el text canvia.value: L'estat actual del text.
- Text: Mostra el text introduït per l'usuari.
Gestió d'esdeveniments
Exemple amb botó
Podem combinar TextInput amb un botó per gestionar l'entrada de l'usuari. Aquí tens un exemple:
import React, { useState } from 'react';
import { View, TextInput, Button, Text, StyleSheet } from 'react-native';
const UserInputWithButton = () => {
const [text, setText] = useState('');
const [submittedText, setSubmittedText] = useState('');
const handlePress = () => {
setSubmittedText(text);
};
return (
<View style={styles.container}>
<TextInput
style={styles.input}
placeholder="Escriu aquí"
onChangeText={setText}
value={text}
/>
<Button title="Enviar" onPress={handlePress} />
<Text style={styles.text}>Text enviat: {submittedText}</Text>
</View>
);
};
const styles = StyleSheet.create({
container: {
padding: 20,
},
input: {
height: 40,
borderColor: 'gray',
borderWidth: 1,
marginBottom: 10,
paddingHorizontal: 10,
},
text: {
fontSize: 18,
marginTop: 10,
},
});
export default UserInputWithButton;Explicació del codi
- useState: Utilitzem dos estats, un per al text actual (
text) i un altre per al text enviat (submittedText). - handlePress: Funció que s'executa quan es prem el botó, actualitzant l'estat
submittedTextamb el valor detext. - Button: Component que permet a l'usuari enviar el text.
Exercici pràctic
Objectiu
Crear un formulari simple que capturi el nom i l'edat de l'usuari i mostri un missatge de benvinguda.
Instruccions
- Crea un nou component anomenat
UserForm. - Utilitza dos
TextInputper capturar el nom i l'edat. - Afegeix un botó per enviar el formulari.
- Mostra un missatge de benvinguda amb el nom i l'edat de l'usuari quan es prem el botó.
Solució
import React, { useState } from 'react';
import { View, TextInput, Button, Text, StyleSheet } from 'react-native';
const UserForm = () => {
const [name, setName] = useState('');
const [age, setAge] = useState('');
const [message, setMessage] = useState('');
const handleSubmit = () => {
setMessage(`Benvingut/da, ${name}! Tens ${age} anys.`);
};
return (
<View style={styles.container}>
<TextInput
style={styles.input}
placeholder="Nom"
onChangeText={setName}
value={name}
/>
<TextInput
style={styles.input}
placeholder="Edat"
onChangeText={setAge}
value={age}
keyboardType="numeric"
/>
<Button title="Enviar" onPress={handleSubmit} />
{message ? <Text style={styles.text}>{message}</Text> : null}
</View>
);
};
const styles = StyleSheet.create({
container: {
padding: 20,
},
input: {
height: 40,
borderColor: 'gray',
borderWidth: 1,
marginBottom: 10,
paddingHorizontal: 10,
},
text: {
fontSize: 18,
marginTop: 10,
},
});
export default UserForm;Explicació del codi
- Estats: Utilitzem tres estats:
name,ageimessage. - TextInput: Dos camps d'entrada per capturar el nom i l'edat. El camp d'edat utilitza
keyboardType="numeric"per mostrar un teclat numèric. - handleSubmit: Funció que s'executa quan es prem el botó, actualitzant l'estat
messageamb un missatge de benvinguda. - Renderització condicional: Mostrem el missatge de benvinguda només si
messageno és buit.
Conclusió
En aquesta secció, hem après com gestionar l'entrada de l'usuari en una aplicació React Native utilitzant el component TextInput i gestionant esdeveniments amb botons. Hem creat un formulari bàsic amb validació i hem vist com mostrar missatges dinàmics basats en l'entrada de l'usuari. A la següent secció, explorarem com utilitzar ScrollView i ListView per gestionar contingut llarg i llistes.
Curs de React Native
Mòdul 1: Introducció a React Native
- Què és React Native?
- Configuració de l'entorn de desenvolupament
- Aplicació Hello World
- Comprendre JSX
- Components i Props
Mòdul 2: Components bàsics i estilització
- Visió general dels components bàsics
- Text, View i Image
- Estilització amb Flexbox
- Gestió de l'entrada de l'usuari
- ScrollView i ListView
Mòdul 3: Estat i cicle de vida
- Mètodes d'estat i cicle de vida
- Gestió d'esdeveniments
- Renderització condicional
- Llistes i claus
- Formularis i components controlats
Mòdul 4: Navegació
- Introducció a React Navigation
- Stack Navigator
- Tab Navigator
- Drawer Navigator
- Passar paràmetres a les rutes
Mòdul 5: Xarxes i dades
- Obtenir dades amb Fetch API
- Utilitzar Axios per a sol·licituds HTTP
- Gestió d'errors de xarxa
- AsyncStorage per a dades locals
- Integració amb APIs REST
Mòdul 6: Conceptes avançats
Mòdul 7: Desplegament i publicació
- Construcció per a iOS
- Construcció per a Android
- Publicació a l'App Store
- Publicació a Google Play
- Integració i lliurament continus
