zoukankan      html  css  js  c++  java
  • React Native Modal的onRequestClose属性详解

    Modal大家都比较熟悉,关于它的onRequestClose属性到底是起什么作用,我们到底要不要实现它?

    官方文档上要求Android平台必须实现,那是为什么呢?

    /**
    *“onRequestClose”属性允许传递一个函数,该函数将在模式被取消后调用。
    *在Android平台上,这是一个必需的功能_
    */

     /**
         * The `onRequestClose` prop allows passing a function that will be called once the modal has been dismissed.
         * _On the Android platform, this is a required function._
         */
        onRequestClose?: () => void;

    现在我们就来详解下这个属性:

    这个属性其实监听的是安卓上的返回键

    在安卓4.0之前,安卓是有物理返回键的,

    4.0之后提供了虚拟导航的功能,物理返回键不再存在,类似苹果一样的,只有一个home键,此时监听的就是虚拟的物理返回键,

    5.0之后,安卓也开启了全面屏,但系统还是保留了虚拟导航的功能,用户可以通过系统设置去开启这个功能,但大部分手机出厂设置时默认是全面屏的,此时这个属性监听还是虚拟的物理返回键,前提是用户开启了虚拟导航的功能

    综上所述:

    4.0之前监听的是物理返回键,4.0之后监听的是虚拟物理返回键,总之这个属性监听的是安卓的返回键

    我们怎么做?

    针对这个属性,

    1、我们严谨一点的做法应该是实现这个属性,在函数中实现关闭方法,这样在用户点击安卓返回键的时候,我们的遮罩层就会消失,

    2、如果不实现这个属性,那么最糟糕的情况也就是用户点击返回按钮的时候,遮罩层不消失,不会有什么别的问题,

    至于要不要实现这个方法,完全取决与产品设计了,看是不是有这个需求

    从大的方向看,

    现在大部分安卓手机也都是默认全屏模式,和苹果的操作类似,换言之,大家的操作习惯逐渐变的统一,这个适配的意义也就不大了,但最终还是取决于产品设计

    综上:

    在使用Modal的时候我们严谨一点的做法还是要实现这个属性,确保点击安卓返回键的时候,能够正常关闭遮罩层

    <Modal
                    animationType="slide"
                    transparent={true}
                    visible={this.state.modalVisible}
                    onRequestClose={() => {
                        this.setModalVisible(false)
                    }}
                >
  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/lijianyi/p/15303908.html
Copyright © 2011-2022 走看看