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
useState
per gestionar l'estat del text introduït. - TextInput: El component
TextInput
té 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
submittedText
amb 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
TextInput
per 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
,age
imessage
. - 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
message
amb un missatge de benvinguda. - Renderització condicional: Mostrem el missatge de benvinguda només si
message
no é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