4.5.3 항목을 삭제하기 전에 한번 물어보기
이번에는 항목을 삭제하기 전에 사용자에게 정말 삭제할 건지 물어보는 알림창을 띄워보겠습니다. 리액트 네이티브에 내장되어 있는 Alert라는 API를 통해 구현할 수 있습니다.
TodoItem 컴포넌트를 다음과 같이 수정해보세요.
components/TodoItem.js
import React from 'react'; import { View, Text, StyleSheet, Image, TouchableOpacity, Alert, } from 'react-native'; import Icon from 'react-native-vector-icons/MaterialIcons'; function ({id, text, done, onToggle, onRemove}) { const remove = () => { Alert.alert( '삭제', '정말로 삭제하시겠어요?', [ {text: '취소', onPress: () => {}, style: 'cancel'}, { text: '삭제', onPress: () => { onRemove(id); }, style: 'destructive', }, ], { cancelable: true, onDismiss: () => {}, }, ); }; return ( <View style={styles.item}> <TouchableOpacity onPress={() => (id)}> <View style={[styles.circle, done && styles.filled]}> {done && ( <Image source={ ('../assets/icons/check_white/check_white.png')} /> )} </View> </TouchableOpacity> <Text style={[styles.text, done && styles.lineThrough]}>{text}</Text> {done ? ( <TouchableOpacity onPress={remove}> <Icon name="delete" size={32} color="red" /> </TouchableOpacity> ) : ( <View style={styles.removePlaceholder} /> )} </View> ); } (...)