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有关的小细节
Apr 02 Javascript
JQuery 初体验(建议学习jquery)
Apr 25 Javascript
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
js从Cookies里面取值的简单实现
Jun 30 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 Javascript
js实现各种复制到剪贴板的方法(分享)
Oct 27 Javascript
Angular实现响应式表单
Aug 04 Javascript
基于JavaScript 性能优化技巧心得(分享)
Dec 11 Javascript
详解封装基础的angular4的request请求方法
Jun 05 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
Javascript call及apply应用场景及实例
Aug 26 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面向对象
2012/02/22 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
2019/03/25 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
javascript产生随机数方法汇总
2016/01/25 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python编程中对文件和存储器的读写示例
2016/01/25 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
python获取交互式ssh shell的方法
2019/02/14 Python
详解CSS3选择器:nth-child和:nth-of-type之间的差异
2017/09/18 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
先进班级集体事迹材料
2014/01/30 职场文书
学习经验演讲稿
2014/05/10 职场文书
展览会邀请函
2015/02/02 职场文书
成人成长感言如何写?
2019/08/16 职场文书