Pressable es un componente en React Native diseñado para manejar interacciones táctiles de una manera más flexible que otros componentes como TouchableOpacity. Permite agregar varios estados de interacción, como cuando el usuario presiona o mantiene presionado un área, brindando más control sobre las interacciones del usuario.
Pressable se utiliza para envolver un componente y hacer que sea interactivo. Se puede combinar con diversas propiedades para manejar el comportamiento táctil, como cambios de estilo o acciones cuando el área es presionada.
import React from 'react';
import { Pressable, Text, StyleSheet } from 'react-native';
const App = () => {
return (
<Pressable style={styles.button} onPress={() => alert('¡Presionado!')}>
<Text style={styles.buttonText}>Presiona aquí</Text>
</Pressable>
);
};
const styles = StyleSheet.create({
button: {
backgroundColor: '#2196F3',
padding: 15,
borderRadius: 5,
alignItems: 'center',
},
buttonText: {
color: 'white',
fontSize: 16,
},
});
export default App; onPress: Función que se ejecuta cuando el usuario presiona el componente.onPressIn: Función que se ejecuta cuando el usuario comienza a presionar el componente.onPressOut: Función que se ejecuta cuando el usuario deja de presionar el componente.style: Estilos aplicados al componente. Puedes cambiar el estilo basado en la interacción del usuario (por ejemplo, cuando se presiona).android_ripple: Configura el efecto de onda (ripple) cuando se presiona en dispositivos Android.disabled: Si es true, el componente no es interactivo.Este ejemplo muestra un botón básico que se activa cuando el usuario lo presiona.
import React from 'react';
import { Pressable, Text, StyleSheet } from 'react-native';
const App = () => {
return (
<Pressable
style={styles.button}
onPress={() => alert('¡Botón presionado!')}>
<Text style={styles.buttonText}>Presiona aquí</Text>
</Pressable>
);
};
const styles = StyleSheet.create({
button: {
backgroundColor: '#2196F3',
padding: 15,
borderRadius: 5,
alignItems: 'center',
},
buttonText: {
color: 'white',
fontSize: 16,
},
});
export default App; Pressable permite cambiar dinámicamente el estilo del componente cuando el usuario interactúa con él, usando las propiedades onPressIn y onPressOut.
import React, { useState } from 'react';
import { Pressable, Text, StyleSheet } from 'react-native';
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
const App = () => {
const [pressed, setPressed] = useState(false);
return (
<SafeAreaProvider>
<SafeAreaView style={styles.container}>
<Pressable
style={[styles.button, pressed && styles.buttonPressed]}
onPressIn={() => setPressed(true)}
onPressOut={() => setPressed(false)}
onPress={() => alert('¡Botón presionado!')}>
<Text style={styles.buttonText}>Presiona aquí</Text>
</Pressable>
</SafeAreaView>
</SafeAreaProvider>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent:"center",
alignContent:"center",
backgroundColor: '#f5f5f5',
},
button: {
backgroundColor: '#2196F3',
padding: 15,
borderRadius: 5,
alignItems: 'center',
},
buttonPressed: {
backgroundColor: 'orange',
},
buttonText: {
color: 'white',
fontSize: 16,
},
});
export default App; android_rippleEn dispositivos Android, Pressable soporta un efecto de onda de estilo ripple que da un feedback visual cuando se presiona el componente.
import React from 'react';
import { Pressable, Text, StyleSheet } from 'react-native';
const App = () => {
return (
<Pressable
style={styles.button}
onPress={() => alert('¡Botón presionado!')}
android_ripple={{ color: 'lightblue' }}
>
<Text style={styles.buttonText}>Presiona aquí</Text>
</Pressable>
);
};
const styles = StyleSheet.create({
button: {
backgroundColor: '#2196F3',
padding: 15,
borderRadius: 5,
alignItems: 'center',
},
buttonText: {
color: 'white',
fontSize: 16,
},
});
export default App; TouchableOpacity, Pressable se puede usar para crear botones personalizados con una respuesta visual al toque del usuario.onPressIn, onPressOut y onPress para crear interacciones complejas, como animaciones o cambios de estilo durante el ciclo de vida de la presión.disabled para hacer que un componente no sea interactivo cuando sea necesario.onPressIn y onPressOut para cambiar el estilo de los componentes es una forma sencilla de hacerlo.android_ripple: Aprovecha el efecto ripple en dispositivos Android para mejorar la experiencia de usuario.disabled: Utiliza la propiedad disabled para evitar que un componente sea presionado varias veces de forma consecutiva si es necesario.Pressable es un componente poderoso en React Native que te permite manejar interacciones táctiles con mucho control, como la capacidad de detectar el comienzo y final de un toque, cambiar estilos dinámicamente y aplicar efectos como el ripple. Es ideal para situaciones en las que necesitas una mayor flexibilidad en la interacción del usuario con los elementos de la interfaz.