反应本机模式未关闭

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(() =&gt; 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';

【讨论】:

以上是关于反应本机模式未关闭的主要内容,如果未能解决你的问题,请参考以下文章

通过 NodeJS 与 MongoDB 反应本机 [关闭]

为啥不使用实时打包服务器进行生产?反应本机[关闭]

用于反应本机应用程序图标徽章的库 [关闭]

在本机反应中单击 TextInput 字段外部时失去焦点并关闭键盘?

TextInput 中的每次按键后键盘都会关闭本机反应

如何下载 o 在本机反应中所做的应用程序? [关闭]