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 相关文章推荐
JS维吉尼亚密码算法实现代码
Nov 09 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
connect中间件session、cookie的使用方法分享
Jun 17 Javascript
js使用setTimeout实现定时炸弹的方法
Apr 10 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
学习使用AngularJS文件上传控件
Feb 16 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
从零学习node.js之文件操作(三)
Feb 21 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
Mar 07 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
磨咖啡豆的密诀
2021/03/03 冲泡冲煮
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP过滤黑名单关键字的方法
2014/12/01 PHP
php中动态调用函数的方法
2015/03/16 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
php如何实现数据库的备份和恢复
2020/11/30 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
详解Vue方法与事件
2017/03/09 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
React 源码中的依赖注入方法
2018/11/07 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python如何读写csv数据
2018/03/21 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
简单谈谈python基本数据类型
2018/09/26 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
python redis存入字典序列化存储教程
2020/07/16 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
全球知名的婚恋交友网站:Match.com
2017/01/05 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
2014年学生会生活部工作总结
2014/11/07 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
党支部对转正的意见
2015/06/02 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
Java实现给Word文件添加文字水印
2022/02/15 Java/Android