У меня есть меню, в котором я создаю список кнопок для каждого файла в asyn c хранилище, однако я изо всех сил пытаюсь найти способ, чтобы на LongPress появлялось всплывающее окно «Подтвердить удаление». Я не знаю, как создать базовый модальный компонент, с помощью которого я могу передавать сведения об элементе на карту, так что, когда я долго нажимаю на определенный файл c, появится всплывающее окно, чтобы дать мне возможность удалить указанные c файл, который был нажат.
Понятия не имею, каков правильный подход. На данном этапе я даже не знаю, как сделать видимым модальное окно. Что я пробовал:
Вот моя карта:
{props.fileList.map((item) => {
return(
<TouchableOpacity
key={item.id}
style={styles.fileButton}
onLongPress={() => deletePopupHandler(item)}
onPress={() => loadFile(item)}>
<Text>
{item}
</Text>
</TouchableOpacity>
)
})}
мой обработчик всплывающих окон удаления (я думаю, что здесь я делаю ошибку, я не знаю, как я может правильно передавать информацию об элементе с карты в функцию onLongPress):
const deletePopupHandler = (item) => {
console.log('indeletepopophandler')
deletePopupContent = <DeletePopup
popupVisible={popupVisible}
setPopupVisible={setPopupVisible}
item={item}
/>
setPopupVisible(true)
}
мой компонент «Удалить всплывающее окно» (еще не удосужился написать функцию кнопки «Да», так как я не могу заставить модальное окно отображаться с особенности элемента):
<Modal visible={props.popupVisible} transparent={true}>
<View style={styles.popupContainer}>
<View style={styles.popupWindow}>
<Text style={styles.message}>
Delete?
</Text>
<View style={styles.buttonContainer}>
<TouchableOpacity style={styles.buttonYes}><Text>Yes</Text></TouchableOpacity>
<TouchableOpacity style={styles.buttonNo} onPress={() => props.setPopupVisible(false)}><Text>No</Text></TouchableOpacity>
</View>
</View>
</View>
</Modal>
Тогда у меня просто есть переменная {deletePopupContent} в функции возврата приложений.
Спасибо
EDIT - Нашел способ обойти это, хотя ответ ниже лучше Итак, я нашел способ, чтобы это сработало, если кто-то еще столкнется с тем же. Я удалил модальное окно из компонента и вместо этого обернул его вокруг {deletePopupContent}.
Итак, компонент изменен на:
<View style={styles.popupContainer}>
<View style={styles.popupWindow}>
<Text style={styles.message}>
Delete?
</Text>
<View style={styles.buttonContainer}>
<TouchableOpacity style={styles.buttonYes}><Text>Yes</Text></TouchableOpacity>
<TouchableOpacity style={styles.buttonNo} onPress={() => props.setPopupVisible(false)}><Text>No</Text></TouchableOpacity>
</View>
</View>
</View>
В моем возврате приложения у меня есть:
<Modal visible={popupVisible}>
{deletePopupContent}
</Modal>