【问题标题】: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中做

标签: javascript ios react-native


【解决方案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';
    

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      相关资源
      最近更新 更多