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 相关文章推荐
jquery imgareaselect 使用利用js与程序结合实现图片剪切
Jul 30 Javascript
combox改进版 页面原型参考dojo的,比网上jQuery的那些combox功能强,代码更小
Apr 15 Javascript
web页面数据展示新想法(json)
Jun 08 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
Jan 24 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
jquery插件orbit.js实现图片折叠轮换特效
Apr 14 Javascript
JavaScript检测原始值、引用值、属性
Jun 20 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
解决vue打包后刷新页面报错:Unexpected token
Aug 27 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 JS Ip地址及域名格式检测代码
2013/09/27 PHP
php中strtotime函数用法详解
2014/11/15 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
Form表单上传文件(type=&quot;file&quot;)的使用
2017/08/03 Javascript
layui使用templet格式化表格数据的方法
2019/09/16 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
2018/02/23 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
南京某软件公司的.net面试题
2015/11/30 面试题
消防先进事迹材料
2014/02/10 职场文书
个人先进材料范文
2014/12/30 职场文书
银行资信证明
2015/06/17 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
分析Java中Map的遍历性能问题
2021/06/26 Java/Android