PS:本文仅说明Modal可以用来做Drawer,并不介绍Modal的用法。

今天在开发的时候,想要使用Drawer。

RN原生不自带Drawer,react-native-drawer又有bug(没法显示背景层),react-native-elements只提供了Overlay,teaset不带没有ts声明文件。

奔溃了,RN的坑有点大啊。

坑都入了,至少把手头的APP做完再弃坑吧。于是决定自己写一个Drawer组件。

思路很简单,用绝对定位,zIndex设置一个大的数。

简单代码示意如下:

<View style={styles.backdrop}>
<View style={styles.overlay}>
{ this.props.children }
</View>
</View>
const styles = StyleSheet.create({
backdrop: {
position: 'absolute',
top: 0,
left: 0,
width: '100%',
height: '100%',
zIndex: 10000
}
overlay: {
position: 'absolute',
top: 0,
left: 0,
width: '80%',
height: '100%'
}
})

结果如下:

诶,奇怪,为什么我设置成top:0,但却没有覆盖顶部的tabs。

难道是我的Drawer的祖先元素中存在一个position为relative,且与tabs平级的元素?

检查了一下代码,并不是。

回想一下写web的时候是怎么实现这个功能的。

诶,我不是用position:fixed的吗!

但是一查,发现RN中position只有absolute和fixed两个取值。

怪了,那react-native-elements的Overlay是怎么实现的。

于是我就看了一下react-native-elements的Overlay的源码,发现它的根元素是RN的Modal。

然后我把RN的Modal替换掉我的Drawer的根元素再看效果,行了!

rn用Modal实现Drawer的更多相关文章

  1. Taro自定义Modal对话框组件|taro仿微信、android弹窗

    基于Taro多端实践TaroPop:自定义模态框|dialog对话框|msg消息框|Toast提示 taro自定义弹出框支持编译到多端H5/小程序/ReactNative,还可以自定义弹窗类型/弹窗样 ...

  2. vue3.0使用ant-design-vue进行按需加载原来这么简单

    下载 ui库 yarn add ant-design-vue 默认是全局引入,打包后体积很大, 非常影响首屏加载速度, 按需加载 下载按需加载的插件;推荐使用cnpm cnpm install bab ...

  3. AntdVue使用

    AntdVue使用 配置与安装 #安装 npm install ant-design-vue --save #按需加载 import { Button, Layout, Row, Col, Menu, ...

  4. 我的 React 最佳实践

    There are a thousand Hamlets in a thousand people's eyes. ----- 威廉·莎士比亚 免责声明:以下充满个人观点,辩证学习 React 目前开 ...

  5. the status bar issue of react-native Modal on Android ( RN v0.57.0)

    Problem: When use Modal in react-native, the status bar is not included if you make a full-screen ma ...

  6. drawer 抽屉 弹框 在 modal的后面的解决方案

    drawer 抽屉 弹框 在 modal的后面的解决方案 方案1 在框内 弹出 <Drawer title="拍照" :transfer="false" ...

  7. react-native自定义Modal模态框|仿ios、微信弹窗RN版

    前序 纵观每个优质项目,无论web端还是native原生应用开发,弹窗都是不可忽视的一环,能很大程度上直接决定用户体验.如:微信.支付宝.ios都有很成熟的一套弹窗UI展示场景. 最近一直沉迷在rea ...

  8. [RN] React Native 使用 teaset(Drawer)实现侧边菜单

    https://www.cnblogs.com/crazycode2/p/9537518.html

  9. RN组件备忘录

    1:ActivityIndicator:圆形的loading提示符号. 2:Button:按钮 3:FlatList:高性能列表组件,支持下拉刷新. 4:Image:图片组件,能显示 网络图片.静态资 ...

  10. [RN] React Native 使用 阿里 ant-design

    React Native 使用 阿里 ant-design 实例效果如图: 一.安装 npm install antd-mobile-rn --save npm install babel-plugi ...

随机推荐

  1. Flutter和Rust如何优雅的交互

    前言 文章的图片链接都是在github上,可能需要...你懂得:本文含有大量关键步骤配置图片,强烈建议在合适环境下阅读 Flutter直接调用C层还是蛮有魅力,想想你练习C++,然后直接能用flutt ...

  2. 静态文件配置,django连接MySQL,ORM基本操作

    静态文件 什么是静态文件 静态文件是不怎么经常变化的文件,主要针对html文件所使用的到的各种资源. css文件.js文件.img文件.第三方框架文件 django针对静态文件资源需要单独开始一个目录 ...

  3. MongoDB从入门到实战之MongoDB简介

    前言 相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能.动态扩缩容.高可用.海量数据存储.数据价值较低.高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通 ...

  4. Node.js躬行记(26)——接口拦截和页面回放实验

    最近在研究 Web自动化测试,之前做了些实践,但效果并不理想. 对于 QA 来说,公司的网页交互并不多,用手点点也能满足.对于前端来说,如果要做成自动化,就得维护一堆的脚本. 当然,这些脚本也可以 Q ...

  5. Zookeeper详解(01) -概述

    Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...

  6. Kaliの一些网络操作

    KAlIの一些网络操作 arping -c 192.168.10.1 缺点是只能对单一ip进行探测,可利用shell脚本进行网段探测扫描 netdiscover -i eth0 -r 192.168. ...

  7. Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level

    云服务器很久没管过了,今天去看了下云服务器日志,不看不知道,一看吓一跳. 日志里竟然是一排的报错,再翻下此前的日志,每天都报一个错误: [http-nio-80-exec-10] org.apache ...

  8. 全志V3S 调试串口更改或关闭

    有时项目外设比较多,很容易造成串口不够用的情况. 最近就遇到了,新增加一个GPS模块串口的,串口现在外部只有原来的调试串口可以用,所以 尝试将调试口更改为普通串口. 经过网上看大神们的文章和自己摸索, ...

  9. (16)go-micro微服务jaeger链路追踪

    目录 一 jaeger链路追踪介绍 什么是链路追踪: 链路追踪主要功能: 二 jaeger链路追踪作用 三 jaeger链路追踪主要特性 四 jaeger链路追踪原理图 1.链路调用原理 2. 一次调 ...

  10. 视图,触发器,存储过程,流程控制等MySQL小知识点

    视图,触发器,存储过程,流程控制等MySQL小知识点 一.SQL注入问题 登录: import pymysql conn = pymysql.connect( host='127.0.0.1', po ...