反应本机模式未关闭
Posted
技术标签:
【中文标题】反应本机模式未关闭【英文标题】:React Native Modal Not Closing 【发布时间】:2016-08-22 14:46:28 【问题描述】:我在我的 ios 应用程序中覆盖了以下 Modal 组件,同时等待多个异步请求返回。
<Modal transparent=true visible=this.state.visible>
<View style=flex: 1>
<ActivityIndicator color="white" size="large"/>
</View>
</Modal>
一旦所有请求都返回,this.state.visible 将设置为 false。但是,大约 50% 的时间模态会无限期地保留在屏幕上,即使在请求返回之后也是如此。我已经在我的渲染函数顶部记录了 this.state.visible 并且它如预期的那样是错误的,但模式并没有消失。关于为什么会发生这种情况的任何想法?
【问题讨论】:
您找到解决方案了吗?似乎问题仍然存在 你找到解决办法了吗? 你能把文件的整个代码贴出来吗? 你在这个.setState中做 【参考方案1】:也许这是我在这里面临的同样问题。
我在关闭一个模态并打开另一个模态时遇到了这个问题,有些人在使用模态和警报时遇到了这个问题......
https://github.com/facebook/react-native/issues/10471
目前,解决方案是在操作前超时(600ms 应该可以解决)。
【讨论】:
这很可能在许多不同的情况下发生变化。就我而言,使用redux-saga
我在更改模态可见性的操作之前设置了yield delay(600)
。如果您只是设置state
,您可以执行setTimeout(() => this.setState( visible: true ), 600)
之类的操作。但老实说,我认为您应该总体上看一下您的代码,也许有更好的方法。【参考方案2】:
现在一个简单的解决方案,在再次显示对话框之前,首先将其延迟时间使其不可见,然后再次显示对话框
this.setState(
showPopUp: false,
, () =>
let timer = setTimeout(() =>
this.setState(
showPopUp: true,
);
, 300);
)
【讨论】:
【参考方案3】:您可以使用 react-native-paper 模态。
import Modal from 'react-native-paper';
【讨论】:
以上是关于反应本机模式未关闭的主要内容,如果未能解决你的问题,请参考以下文章