【问题标题】:React Native modal is opening child WebBrowser and Share native views only after closing modalReact Native modal 正在打开子 WebBrowser 并仅在关闭 modal 后共享本机视图
【发布时间】:2018-04-03 17:21:59
【问题描述】:

我将 React-native 和 Expo 用于我的移动客户端。

流程:

  1. 用户点击以从根视图打开模式
  2. Modal 具有 Expo 的 Share 和 WebView 调用按钮。
  3. 当用户点击打开其中任何一个时,什么都没有发生。
  4. 当用户手动关闭模式时,会突然调用 WebBrowser/Share,并在模式是其子级的根视图上打开。

调用 Share 和 WebBrowser 调用程序的函数都模式的控制器中。

模态控制器的部分内容:

openBrowser = (url) => {
  WebBrowser.openBrowserAsync(url);
}
shareModel = (url) => {
  Share.share({
   url: url
  }) .then(console.log(`Shared ${url}`))
  .catch(err => console.log(err))
}


render() {
  return (
  <Modal
      visible={this.props.visible}
      animationType={'slide'}
      onRequestClose={this.props.onRequestClose}
  >
  <View style={styles.modalContainer}>
    <View style={styles.oneButton}>
    <TouchableOpacity style={styles.toolbarButton} onPress={() => this.openBrowser(this.props.model.public_url)}>
      <SimpleLineIcons
            name='globe'
            size={29}
            style={{ marginTop: 1 }}
            color='#7366E3'
        />
      <Text style={{ color: '#7366E3', fontSize: 13, marginTop: 1 }}>View</Text>
    </TouchableOpacity>
    </View>
  </View>
  </Modal>
 )
}

有什么想法吗?这个确切的代码在过去运行良好,但发生了一些变化。

【问题讨论】:

  • 这也适用于纯 JS 的 alert() 函数。警报只会在模式关闭后打开,但控制台会记录好像它是在您按下按钮时运行的一样。

标签: react-native react-navigation expo


【解决方案1】:

这可能是由于新的 Expo 客户端的 SDK26。他们的一项重大更改包括 WebBrowser 中的方法,请参阅 https://blog.expo.io/expo-sdk-v26-0-0-is-now-available-2be6d9805b31

【讨论】:

  • 我没有看到任何对阻止所有本机功能的模态的引用。
猜你喜欢
  • 2022-12-31
  • 2021-03-23
  • 2019-06-26
  • 2020-10-28
  • 2011-01-12
  • 2020-11-16
  • 2018-08-12
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多