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 TodoItem({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={() => onToggle(id)}>
            <View style={[styles.circle, done && styles.filled]}>
              {done && (
                <Image
                  source={require('../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>
      );
    }
    
    (...)
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.