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 相关文章推荐
javascript学习随笔(使用window和frame)的技巧
Mar 08 Javascript
为什么JS中eval处理JSON数据要加括号
Apr 13 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
Jan 21 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
详解Angular Reactive Form 表单验证
Jul 06 Javascript
JS实现字符串中去除指定子字符串方法分析
May 17 Javascript
浅谈vue引用静态资源需要注意的事项
Sep 28 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
详解vue-property-decorator使用手册
Jul 29 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
JavaScript ES6的函数拓展
Jan 18 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
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
npm的lock机制解析
2019/06/20 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
javascript实现时钟动画
2020/12/03 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python中的字符串内部换行方法
2018/07/19 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
解决Python二维数组赋值问题
2019/11/28 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
教师自荐信
2013/12/10 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
活动总结书怎么写
2015/05/11 职场文书
未婚证明格式
2015/06/15 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
导游词之任弼时故居
2020/01/07 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
详解Go语言中Get/Post请求测试
2022/06/01 Golang
Redis keys命令的具体使用
2022/06/05 Redis