【问题标题】:Open overlay component when button is pressed按下按钮时打开覆盖组件
【发布时间】:2020-11-19 15:43:30
【问题描述】:

我正在使用react-native-element Overlay 组件。我要做的是在工具栏的标题上定义一个按钮,当单击该按钮时,会从工具栏的底部打开覆盖。我试过了:

我的自定义组件包装了 Overlay 组件:

import {Overlay} from 'react-native-elements';
...
const MyOverlay = ({isVisible}) => {
   return (
    <View>
      <Overlay isVisible={visible} onBackdropPress={true}>
        <Text>Hello from Overlay!</Text>
      </Overlay>
    </View>
  );
}

在我的一个屏幕中,我在标题栏(工具栏)上显示了一个按钮,在我尝试打开MyOverlay 的按钮的onPress 回调中:

const MyScreen = ({route, navigation}) => {
   ...
   navigation.setOptions({
      headerTitle: props => (
        <Button
          title="open"
          color="#f194ff"
          style={{width: 50, height: 50}}
          onPress={() => <MyOverlay isVisible={true} />}
        />
      ),
    });
   ...

}

当我运行该应用程序时,该按钮显示在工具栏上,但单击它时,没有任何反应。

我的问题:

  1. 按下该按钮时如何打开MyOverlay
  2. 如何确保覆盖视图从工具栏底部打开?

【问题讨论】:

    标签: react-native react-native-android react-native-ios react-native-elements


    【解决方案1】:

    试试这个

    定义状态

    const MyScreen = ({route, navigation}) => {
    
    const [visible, setVisible] = useState(false);
    
      const toggleOverlay = () => {
        setVisible(!visible);
      };
    
    ....
    

    在主返回函数中添加overylay

    return (
    .....
    <MyOverlay isVisible={visible} />
    )
    

    设置按钮按下时的状态

    <Button
              title="open"
              color="#f194ff"
              style={{width: 50, height: 50}}
              onPress={() => toggleOverlay()}
            />
    

    【讨论】:

    • 为什么要在主返回函数中返回叠加层?主返回函数应该返回 MyScreen 布局。如果我在主返回函数中返回覆盖组件,那么我应该如何显示 MyScreen 的主布局?
    • 返回主布局并包含 MyOverlay 组件。它会在按下按钮时显示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2014-01-27
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多