【问题标题】:How to show overlay page using react native for iOS and android?如何使用 iOS 和 android 的 react native 显示覆盖页面?
【发布时间】:2020-07-29 16:04:13
【问题描述】:

在我的代码中,我有两个屏幕,其中包含两个不同的 class 文件。在这里,我需要单击屏幕一键来显示屏幕二。屏幕二需要像overlay 屏幕一样显示,如果点击屏幕二按钮,那么它应该dissolve 并返回屏幕一。如何做到这一点?

示例屏幕enter image description here

下面的代码我用于点击调用另一个页面

<TouchableOpacity
              onPress={() => {
                this.setState({ isVisible: false });
                this.props.navigation.navigate('screen2');
              }}>

屏幕下方代码二

render () {
        const Screentwo = this.renderCarousel('test');
        return (
            <SafeAreaView style={styles.safeArea}>
                <View style={styles.container}>
                    <StatusBar
                      translucent={true}
                      backgroundColor={'rgba(0, 0, 0, 0.3)'}
                      barStyle={'light-content'}
                    />
                    <ScrollView
                      style={styles.scrollview}
                      scrollEventThrottle={200}
                      directionalLockEnabled={true}
                    >
                    </ScrollView>
                </View>
            </SafeAreaView>
        );
    }

【问题讨论】:

    标签: android ios typescript react-native


    【解决方案1】:

    你应该明确地检查一下 React Natives 模态组件https://reactnative.dev/docs/modal#__docusaurus

    或在 github 上搜索社区提供的类似您喜欢的内容。

    【讨论】:

    • 按钮点击显示另一个页面。如何做到这一点?我不想使用导航。
    • @questanswer 你不想使用导航是什么意思?你不需要在模态中你可以在一个文件中创建一个模态组件并在那里有你的正常屏幕,如果你点击一个按钮切换模态并显示你的模态屏幕(组件)
    【解决方案2】:

    试试这个对你有帮助

    import React, { useState } from "react";
     import {
              View,
              Text,
              TouchableWithoutFeedback,
              StyleSheet,
              Button,
              Modal,
              TouchableOpacity
            } from "react-native";
    
            function MenuTask() {
              const [isVisible, onDisapearCallBack] = useState(false);
              return (
                <View
                  style={{
                    flex: 1,
                    justifyContent: "center",
                    alignItems: "center",
                    backgroundColor: "orange"
                  }}
                >
                  <Modal animationType="fade" transparent={true} visible={isVisible}>
                    <TouchableWithoutFeedback onPress={() => onDisapearCallBack(false)}>
                      <View style={{ flex: 1, backgroundColor: "rgba(0,0,0,0.7)" }}>
                        <TouchableWithoutFeedback>
                          <View
                            style={{
                              flex: 1,
                              justifyContent: "center",
                              alignItems: "center",
                              backgroundColor: "white",
                              marginVertical: 150,
                              marginHorizontal: 10
                            }}
                          >
                           {class 2 code}
                          </View>
                        </TouchableWithoutFeedback>
                      </View>
                    </TouchableWithoutFeedback>
                  </Modal>
              {class 1 code}
                </View>
              );
            }
    
            export default MenuTask;
    

    【讨论】:

    • 谢谢,但是如何从另一个页面调用这个页面?
    • 请详细说明,您询问了一个叠加层,它显示了一个叠加层。请详细询问您到底想要什么。将“无叠加”替换为主页内容,其他内容替换为“侧叠加内容”,您也可以通过道具将其转换为组件。
    • 将你的第二个类的代码放入 {secondClass()}
    • @questanswer 觉得有帮助请点赞
    • 我已经有了Page1和Page2两个不同的类文件。这里从 page1 按钮单击然后需要出现 Page2(就像弹出出现效果但它不是弹出)。 Page2 屏幕显示是透明的,它应该显示背面屏幕。
    猜你喜欢
    • 1970-01-01
    • 2012-08-20
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多