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判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
Jan 09 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
微信小程序实现横向增长表格的方法
Jul 24 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
vue如何解决循环引用组件报错的问题
Sep 22 Javascript
js使用formData实现批量上传
Mar 27 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
javascript读取本地文件和目录方法详解
Aug 06 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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
PHP文件操作方法汇总
2015/07/01 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
CI框架附属类用法分析
2018/12/26 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
vue中activated的用法
2021/01/03 Vue.js
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
Python编程之变量赋值操作实例分析
2017/07/24 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
实习期自我鉴定
2013/10/11 职场文书
劳资专员岗位职责
2013/12/27 职场文书
小学生打架检讨书
2014/01/26 职场文书
写自荐信的注意事项
2014/03/09 职场文书
欢迎领导检查标语
2014/06/27 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
关于环保的广播稿
2015/12/17 职场文书