javascript - 如何渲染几秒钟后消失的视图(反应原生)
问题描述
想要呈现一个显示当前页面/页数的视图
(当我触摸图像时,它会呈现此视图)我使用了可触摸的不透明度,但触摸时没有任何反应
<TouchableOpacity
onPress={()=>{return <ShowPagination/>}}
style={{width: '100%', height: '100%', bottom:40}}
onStartShouldSetResponder={(e) => {
return e.nativeEvent.touches.length < 2 && scaleValue.current <= 1;
}}
>
<Image
source={source}
resizeMode="contain"
style={styles.image}
/>
</TouchableOpacity>
这是我要渲染的视图
const ShowPagination = () => {
return(
<View style={paging_style.paging_container}>
<Text style={paging_style.text}>NP/TP</Text>
</View>
)
}
请帮忙
解决方案
你不能在 onPress 中返回一个组件,这不是它的工作原理,
为了实现这一点,你应该让 state 参与进来,
const [ showPagination, setShowPagination] = useState(false)
然后在可触摸的不透明度中,将ShowPagination设置为true
<TouchableOpacity
onPress={()=> setShowPagination(true) }
style={{width: '100%', height: '100%', bottom:40}}
onStartShouldSetResponder={(e) => {
return e.nativeEvent.touches.length < 2 && scaleValue.current <= 1;
}}
>
<Image
source={source}
resizeMode="contain"
style={styles.image}
/>
</TouchableOpacity>
然后根据要求在组件内部的某个地方,将 ShowPagination 如下所示
{ showPagination && <ShowPagination /> }
现在最后一件事,你想在几秒钟后隐藏,你可以在 useEffect 中设置 setTimeout
useEffect(() => {
if (showPagination) {
// 1000 for 1 second
setTimeout(() => setShowPagination(false), 1000)
}
}, [showPagination])
推荐阅读
- python - 嵌套 FOR 循环 - 编码挑战
- javascript - 将递归函数转换为 node-cron 作业
- matlab - 求和条件应用于没有循环的向量的可能排列 MATLAB
- python - Tesla T4 没有选择 GPU
- html - 图片不会填满 div
- ruby-on-rails - 如何在 ActiveAdmin 上为 biginteger 制作 *_cont 过滤器
- c - 使用 [] 运算符而不是使用 malloc 动态分配数组?
- javascript - 从对象数组中减去值
- javascript - 按住 keydown 问题时单击 Firefox 事件传播
- r - scale_size 和 scale_alpha_manual 基于组名