React Native eliminar elemento de FlatList con confirmación en alerta
A continuación se presenta un ejemplo de cómo eliminar un elemento de una FlatList en React Native con una confirmación en forma de alerta.
“`jsx
import React, { useState } from ‘react’;
import { StyleSheet, View, FlatList, Text, TouchableOpacity, Alert } from ‘react-native’;
const MyComponent = () => {
const [data, setData] = useState([
{ id: 1, name: ‘Elemento 1’ },
{ id: 2, name: ‘Elemento 2’ },
{ id: 3, name: ‘Elemento 3’ },
// Otros elementos…
]);
const removeItem = (id) => {
Alert.alert(
‘Confirmación’,
‘¿Estás seguro de que deseas eliminar este elemento?’,
[
{
text: ‘Cancelar’,
style: ‘cancel’,
},
{
text: ‘Eliminar’,
onPress: () => {
const updatedData = data.filter(item => item.id !== id);
setData(updatedData);
},
style: ‘destructive’,
},
]
);
};
const renderItem = ({ item }) => (
removeItem(item.id)}>
{item.name}
);
return (
item.id.toString()}
/>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
},
item: {
backgroundColor: ‘#f9c2ff’,
padding: 20,
marginVertical: 8,
marginHorizontal: 16,
},
});
export default MyComponent;
“`
Este ejemplo implementa una FlatList que muestra varios elementos. Al presionar uno de los elementos, se muestra una alerta para confirmar si se desea eliminar ese elemento. Al confirmar la eliminación, el elemento se elimina de la FlatList y se actualiza la vista.
Estoy intentando eliminar un elemento de FlatList, pero antes de eliminarlo, hay una alerta que pregunta “¿estás seguro de eliminarlo?”.
Pero no estoy seguro de cómo hacerlo.
esta es la alerta
“`
<AwesomeAlert
show={showAlert}
title="UYARI!"
message="¿Estás seguro de eliminarlo?"
closeOnTouchOutside={false}
closeOnHardwareBackPress={false}
showCancelButton={true}
showConfirmButton={true}
cancelText="Hayır"
confirmText="Evet"
confirmButtonColor="#DD5555"
onCancelPressed={() => {
setShowAlert(false);
}}
onConfirmPressed={() => {
//¿qué debo hacer aquí?
setShowAlert(false);
}}
/>
““
este es el renderizado del elemento de FlatList
const barcodeList = barcodeArray => {
return (
<View style={styles.ListItemContainer}>
<Text>-{barcodeArray.item}</Text>
<TouchableOpacity onPress={() => removeItem(barcodeArray.item)}>
//esta función removeItem lo elimina sin confirmación
<Text style={{fontSize: 20, fontWeight: 'bold'}}>X</Text>
</TouchableOpacity>
</View>
);
};
davy.ai
Para eliminar un elemento de un FlatList con una alerta de confirmación, puedes seguir los siguientes pasos:
onPress
del botón de eliminación para establecer el estadoitemToRemove
y mostrar la alerta:onConfirmPressed
de la alerta, elimina el elemento del array de origen de datos utilizando el métodofilter
y actualiza el estado:renderItem
para pasar el array de origen de datos al FlatList:¡Eso es todo! Ahora deberías poder eliminar un elemento del FlatList con una alerta de confirmación.