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


相关推荐: BootStrap整体框架之基础布局组件  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  nodejs redis 发布订阅机制封装实现方法及实例代码  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何用西部建站助手快速创建专业网站?  Laravel怎么实现验证码(Captcha)功能  Python结构化数据采集_字段抽取解析【教程】  如何在Tomcat中配置并部署网站项目?  如何破解联通资金短缺导致的基站建设难题?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  简单实现Android验证码  Laravel Docker环境搭建教程_Laravel Sail使用指南  使用豆包 AI 辅助进行简单网页 HTML 结构设计  如何生成腾讯云建站专用兑换码?  JavaScript中的标签模板是什么_它如何扩展字符串功能  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  零服务器AI建站解决方案:快速部署与云端平台低成本实践  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  如何正确下载安装西数主机建站助手?  如何将凡科建站内容保存为本地文件?  ,在苏州找工作,上哪个网站比较好?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  如何快速上传自定义模板至建站之星?  如何用5美元大硬盘VPS安全高效搭建个人网站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何在橙子建站上传落地页?操作指南详解  如何在万网自助建站平台快速创建网站?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  JS实现鼠标移上去显示图片或微信二维码  iOS验证手机号的正则表达式  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何使用.env文件管理环境变量?(最佳实践)  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel观察者模式如何使用_Laravel Model Observer配置  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧