React-Native 组件之 Modal的使用详解

发布时间 - 2026-01-11 02:41:12    点击率:

Modal组件可以用来覆盖包含React Native根视图的原生视图(如UIViewController,Activity),用它可以实现遮罩的效果。

属性

Modal提供的属性有:

animationType(动画类型) PropTypes.oneOf([‘none', ‘slide', ‘fade']

  • none:没有动画
  • slide:从底部滑入
  • fade:淡入视野

onRequestClose(被销毁时会调用此函数)

在 ‘Android' 平台,必需调用此函数

onShow(模态显示的时候被调用)

transparent (透明度) bool

为true时,使用透明背景渲染模态。

visible(可见性) bool

onOrientationChange(方向改变时调用)

在模态方向变化时调用,提供的方向只是 ” 或 ”。在初始化渲染的时候也会调用,但是不考虑当前方向。

supportedOrientations(允许模态旋转到任何指定取向)[‘portrait', ‘portrait-upside-down', ‘landscape','landscape-left','landscape-right'])

在iOS上,模态仍然受 info.plist 中的 UISupportedInterfaceOrientations字段中指定的限制。

示例

Modal的使用非常简单,例如:

<Modal
 animationType='slide'      // 从底部滑入 
 transparent={false}       // 不透明
 visible={this.state.isModal}  // 根据isModal决定是否显示
 onRequestClose={() => {this.onRequestClose()}} // android必须实现
 >

综合例子:

import React, { Component} from 'react';
import {
  AppRegistry,
  View,
  Modal,
  TouchableOpacity,
  Text
} from 'react-native';
export default class ModalView extends Component {
  constructor(props) {
    super(props);
    this.state = {
      modalVisible: false,
    }
  }
  setModalVisible = (visible)=> {
    this.setState({
      modalVisible: visible
    })
  };
  render(){
    return(
      <View style={{flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#ffaaff'}}>
        <Modal animationType={'none'}
            transparent={true}
            visible={this.state.modalVisible}
            onrequestclose={() => {alert("Modal has been closed.")}}
            onShow={() => {alert("Modal has been open.")}}
            supportedOrientations={['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right']}
            onOrientationChange={() => {alert("Modal has been OrientationChange.")}}>
          <View style={{flex:1, marginTop: 22, backgroundColor: '#aaaaaa', justifyContent: 'center', alignItems: 'center'}}>
            <View>
              <Text>Hello World!</Text>
              <TouchableOpacity onPress={() => {
                this.setModalVisible(false)
              }}>
                <Text>隐藏 Modal</Text>
              </TouchableOpacity>
            </View>
          </View>
        </Modal>
        <TouchableOpacity onPress={() => {
          this.setModalVisible(true)
        }}>
          <Text>显示 Modal</Text>
        </TouchableOpacity>
      </View>
    )
  }
}
AppRegistry.registerComponent('ModalView', ()=>ModalView);

 运行效果:

从 modal 的源码可以看出,modal 其实就是使用了 绝对定位,所以当 modal 无法满足我们的需求的时候,我们就可以通过 绝对定位 自己来封装一个 modal

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# React-Native  # Modal  # React  # Native组件Modal  # Modal.confirm是否违反了React模式分析  # React报错之组件不能作为JSX组件使用的解决方法  # react中使用ant组件库的modal弹窗报错问题及解决  # 模态  # 滑入  # 也会  # 可以看出  # 可以实现  # 用它  # 大家多多  # 就可以  # 可以用来  # 不透明  # 使用了  # 见性  # landscape  # upside  # left  # iOS  # onOrientationChange  # info  # portrait  # supportedOrientations 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  Laravel用户密码怎么加密_Laravel Hash门面使用教程  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  个人网站制作流程图片大全,个人网站如何注销?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Android仿QQ列表左滑删除操作  Laravel如何保护应用免受CSRF攻击?(原理和示例)  Java解压缩zip - 解压缩多个文件或文件夹实例  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何自定义建站之星网站的导航菜单样式?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何在Tomcat中配置并部署网站项目?  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel如何使用Vite进行前端资源打包?(配置示例)  如何在腾讯云服务器快速搭建个人网站?  EditPlus中的正则表达式实战(6)  如何破解联通资金短缺导致的基站建设难题?  郑州企业网站制作公司,郑州招聘网站有哪些?  如何在腾讯云服务器上快速搭建个人网站?  android nfc常用标签读取总结  Laravel如何使用Blade组件和插槽?(Component代码示例)  中山网站制作网页,中山新生登记系统登记流程?  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel如何使用Telescope进行调试?(安装和使用教程)  详解Android图表 MPAndroidChart折线图  如何解决hover在ie6中的兼容性问题  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何确保FTP站点访问权限与数据传输安全?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何打造高效商业网站?建站目的决定转化率  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  青岛网站建设如何选择本地服务器?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在云主机快速搭建网站站点?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  网站图片在线制作软件,怎么在图片上做链接?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何快速打造个性化非模板自助建站?  长沙做网站要多少钱,长沙国安网络怎么样?  如何在云主机上快速搭建网站?  网站建设保证美观性,需要考虑的几点问题!  ,网页ppt怎么弄成自己的ppt?  香港服务器部署网站为何提示未备案?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言