我正在尝试在 react-native 中创建一个简单的可重用按钮组件,但由于某种原因,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(所以没有控制台日志)
这似乎不仅限于功能组件......
我将 react-native docs 1:1 中的按钮示例添加到我的主屏幕上,并且永远不会调用 onPress 事件:
<Button
onPress={() => {
alert('You tapped the button!');
}}
title="Press Me"
/>