问题描述
(react-native-cli: 2.0.1 反应原生:0.63.2)
我编写了一个包含大量内容的指南,这意味着在页面之间导航(在 StackNavigator 内)需要一些时间。我不希望我的按钮只是冻结等待呈现下一页,所以我想在顶部(并居中)显示一个 ActivityIndicator。 请注意,我有一个包含许多 TouchableOpacity 的 Flatlist。
我认为有两种方法,但它们不会产生正确的结果。 首先,在调用 onPress 时,我想设置一个状态以使用 ActivityIndicator 重新呈现我的页面,并且通过回调,我想在显示 ActivityIndicator 后开始导航。
<TouchableOpacity
onPress={() => {
this.setState({hasClicked:true},navigation.navigate("nextPage"))
}}>
</TouchableOpacity>
注意:hasClicked=true是调用render时显示ActivityIndicator的条件。
第二种方法是使用componentDidUpdate
<TouchableOpacity
onPress={() => {
this.setState({hasClicked:true})
}}>
</TouchableOpacity>
...
componentDidUpdate () {
if (this.state.hasClicked) {
navigation.navigate("nextPage")
}
}
两者都会产生相同的不良行为:当我点击 TouchableOpacity 按钮时,导航立即开始(冻结屏幕),然后加载下一页。当我回到初始页面时,我可以看到 ActivityIndicator。
我不明白我在这里遗漏了什么。
请注意,我找到了一种解决方法,但这并不完全是我想要的:
<TouchableOpacity
onPressIn={() => {
this.setState({hasClicked:true})
}}
onPressOut={() => {
navigation.navigate("nextPage")
this.setState({hasClicked:false})
}}
>
</TouchableOpacity>
使用此代码,我在导航之前获得了在显示 ActivityIndicator 方面我想要的内容,但是由于 onPressIn 和 onPressOut 始终触发,因此无法滚动,它们在滚动(在 FlatList 内)和实际之间没有区别点击。 onPress 有所不同,但我展示的前两段代码不起作用(而且他们甚至还没有尝试处理 ActivityIndicator 在导航后应该消失的事实)。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)