我正在对 FlatList 中显示的项目使用 Pressable React Native 组件。我希望能够在列表中来回滚动并且没有来自项目的反馈,除非按下一会儿。
调用的onPress
函数可以很容易地被该功能延迟onLongPress
,但是我还想在项目被按下一段时间后调用不透明度,而不是在滚动期间。似乎没有一种简单的方法可以做到这一点。到目前为止我没有成功的尝试:
.........
const sleep = (milliseconds: any) => {
return new Promise(resolve => setTimeout(resolve, milliseconds));
};
const display = (pressed: boolean) => {
if (pressed) {
sleep(3000).then(() => {
return true;
});
}
return false;
};
const ItemInList: FunctionComponent<ItemInListProps> = ({
style,
colors,
title = '',
text,
subtext,
children,
onPress,
}) => {
return (
<Pressable
onLongPress={onPress}
delayLongPress={3000}
style={({ pressed }) => [
{
opacity: display(pressed) ? 0.2 : 1,
},
]}>
<LinearGradient
colors={colors || []}
style={StyleSheet.flatten([styles.container, style])}>
<View style={styles.titleContainer}>
<Text style={styles.titleStyle}>{title}</Text>
</View>
<View style={subtext ? styles.subtextContainer : styles.textContainer}>
<Text style={styles.textStyle}>{text}</Text>
</View>
{subtext && (
<View style={styles.subtextContainer}>
<Text style={styles.subtextStyle}>{subtext}</Text>
</View>
)}
{children}
</LinearGradient>
</Pressable>
);
};
export default ItemInList;
这没有任何效果,永远不会显示不透明度。有谁知道如何处理这个问题?
谢谢。