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 Sail是什么_基于Docker的Laravel本地开发环境Sail入门  独立制作一个网站多少钱,建立网站需要花多少钱?  微信小程序 canvas开发实例及注意事项  公司网站制作价格怎么算,公司办个官网需要多少钱?  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel如何生成URL和重定向?(路由助手函数)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  大连网站制作公司哪家好一点,大连买房网站哪个好?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何快速生成凡客建站的专业级图册?  JavaScript Ajax实现异步通信  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  如何基于云服务器快速搭建个人网站?  在Oracle关闭情况下如何修改spfile的参数  iOS验证手机号的正则表达式  深圳网站制作平台,深圳市做网站好的公司有哪些?  Python进程池调度策略_任务分发说明【指导】  Laravel Fortify是什么,和Jetstream有什么关系  Android okhttputils现在进度显示实例代码  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  教学论文网站制作软件有哪些,写论文用什么软件 ?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Python图片处理进阶教程_Pillow滤镜与图像增强  php485函数参数是什么意思_php485各参数详细说明【介绍】  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何在阿里云部署织梦网站?  如何快速生成橙子建站落地页链接?  Android仿QQ列表左滑删除操作  JS去除重复并统计数量的实现方法  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  详解MySQL数据库的安装与密码配置  javascript日期怎么处理_如何格式化输出  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  如何用AWS免费套餐快速搭建高效网站?  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Firefox Developer Edition开发者版本入口  如何在阿里云通过域名搭建网站?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  重庆市网站制作公司,重庆招聘网站哪个好?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  如何彻底卸载建站之星软件?  js实现点击每个li节点,都弹出其文本值及修改  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  打开php文件提示内存不足_怎么调整php内存限制【解决方案】