Я пытаюсь создать простой многократно используемый компонент кнопки в реагирующем, но по какой-то причине функция onPress никогда не вызывается. Большинство потоков, которые я нахожу, просто вызывают функцию мгновенно или объявляют что-то неправильное. Я считаю, что все должно быть в порядке с моим объявлением, и я пробовал несколько разных форм, но безрезультатно
import React from 'react';
import { Text, Button, Image, TouchableOpacity } from 'react-native';
import { useHistory } from "react-router-native";
import { getFileUrl } from '../db/firebaseDb';
import styles from '../modules/Styles';
const GameIcon = (props) => {
const history = useHistory();
const handleClick = (pId) => {
console.log("TEST");
history.push("/game");
}
return (
<TouchableOpacity activeOpacity="0.5" onPress={handleClick}>
{(props.imageUrl)?<Image source={{uri: props.imageUrl}} style={{width: 32, height: 32}}/>:<Text>loading...</Text>}
<Button title={props.game.id} key={props.game.id} color={props.color} style={styles.buttons}/>
</TouchableOpacity>
)
}
export default GameIcon;
console.log никогда не запускается и я понятия не имею, почему ... Я попытался написать компонент как функцию GameIcon ... Я попытался это без TouchableOpacity и просто с кнопкой в функции возврата ... ничего не работает ни на реальном устройстве, ни на эмуляторе
Небольшое обновление:
Я изменил содержимое функции возврата на:
<TouchableOpacity activeOpacity={0.5} onPress={()=>console.log("HELLO")}>
<Text title={props.game.id} key={props.game.id} color={props.color} style={styles.buttons}>{props.game.id}</Text>
</TouchableOpacity>
Компонент рендерится без ошибок или чего-либо еще, его можно вкладывать, и прозрачность изменяется правильно но onPress не вызывается (поэтому нет журнала консоли)
Кажется, это не ограничивается только функциональными компонентами ...
Я добавил пример кнопки из документации о реактивной нативе 1 : 1 на мой домашний экран, и событие onPress никогда не вызывается:
<Button
onPress={() => {
alert('You tapped the button!');
}}
title="Press Me"
/>