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


Posted in Javascript onAugust 08, 2017

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);

 运行效果:

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

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

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

Javascript 相关文章推荐
toggle()隐藏问题的解决方法
Feb 17 Javascript
简单选项卡 js和jquery制作方法分享
Feb 26 Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 Javascript
JavaScript返回网页中超链接数量的方法
Apr 03 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
Jul 03 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
使用ionic播放轮询广告的实现方法(必看)
Apr 24 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
Aug 08 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
Sep 27 Javascript
详解微信小程序回到顶部的两种方式
May 09 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 #jQuery
超级简易的JS计算器实例讲解(实现加减乘除)
Aug 08 #Javascript
浅谈ES6新增的数组方法和对象
Aug 08 #Javascript
Angularjs上传文件组件flowjs功能
Aug 07 #Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 #Javascript
详解express与koa中间件模式对比
Aug 07 #Javascript
JS实现简单短信验证码界面
Aug 07 #Javascript
You might like
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
Symfony的安装和配置方法
2016/03/17 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
Vue验证码60秒倒计时功能简单实例代码
2018/06/22 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
Python网络编程 Python套接字编程
2017/09/13 Python
一步步教你用python的scrapy编写一个爬虫
2019/04/17 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
安全生产投入制度
2014/01/29 职场文书
安卓程序员求职信
2014/02/28 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL