React-Native 之 Modal介紹與使用

前言


  • 遺漏的常用組件树绩,剛發(fā)現(xiàn)官方有提供似舵,這邊也來(lái)介紹一下。
  • 如本文有錯(cuò)或理解偏差歡迎聯(lián)系我葱峡,會(huì)盡快改正更新砚哗!
  • 如有什么問(wèn)題,也可直接通過(guò)郵箱 277511806@qq.com 聯(lián)系我砰奕。

本章涉及資源下載:

鏈接: https://pan.baidu.com/s/1o84o6JS 密碼: htx6

屬性


  • animationType(動(dòng)畫(huà)類(lèi)型) PropTypes.oneOf(['none', 'slide', 'fade'])

    • none:沒(méi)有動(dòng)畫(huà)
    • slide:從底部滑入
    • fade:淡入視野
  • onRequestClose(被銷(xiāo)毀時(shí)會(huì)調(diào)用此函數(shù))Platform.OS ==='android'蛛芥?PropTypes.func.isRequired:PropTypes.func

    • 在 'Android' 平臺(tái),必需使用此函數(shù)
  • onShow(模態(tài)顯示的時(shí)候被調(diào)用)function

  • transparent (透明度) bool

    • true時(shí)军援,使用透明背景渲染模態(tài)仅淑。
  • visible(可見(jiàn)性) bool

    • 決定模態(tài)是否可見(jiàn)
  • onOrientationChange(方向改變時(shí)調(diào)用)PropTypes.func

    • 在模態(tài)方向變化時(shí)調(diào)用,提供的方向只是 '' 或 ''胸哥。在初始化渲染的時(shí)候也會(huì)調(diào)用涯竟,但是不考慮當(dāng)前方向。
  • supportedOrientations(允許模態(tài)旋轉(zhuǎn)到任何指定取向)PropTypes.arrayOf(PropTypes.oneOf(['portrait', 'portrait-upside-down', 'landscape'空厌,'landscape-left'庐船,'landscape-right']))

    • 在iOS上,模態(tài)仍然受 info.plist 中的 UISupportedInterfaceOrientations字段中指定的限制嘲更。

modal 基本使用


  • modal的使用很廣泛筐钟,這邊我們來(lái)看看怎么讓視圖以模態(tài)的形式展示:

        export default class One extends Component {
    
            // 構(gòu)造
            constructor(props) {
                super(props);
                // 初始狀態(tài)
                this.state = {
                    isModal:false
                };
            }
        
            showModal() {
                this.setState({
                    isModal:true
                })
            }
        
            onRequestClose() {
                this.setState({
                    isModal:false
                });
            }
        
            render() {
                return(
                    <View style={styles.container}>
                        {/* 初始化Modal */}
                        <Modal
                            animationType='slide'           // 從底部滑入
                            transparent={false}             // 不透明
                            visible={this.state.isModal}    // 根據(jù)isModal決定是否顯示
                            onRequestClose={() => {this.onRequestClose()}}  // android必須實(shí)現(xiàn)
                        >
                            <View style={styles.modalViewStyle}>
                                {/* 關(guān)閉頁(yè)面 */}
                                <TouchableOpacity
                                    onPress={() => {{
                                        this.setState({
                                            isModal:false
                                        })
                                    }}}
                                >
                                    <Text>關(guān)閉頁(yè)面</Text>
                                </TouchableOpacity>
                            </View>
                        </Modal>
        
                        {/* 返回按鈕 */}
                        <TouchableOpacity
                            onPress={() => {{
                                this.props.navigator.pop()
                            }}}
                        >
                            <Text>返回</Text>
                        </TouchableOpacity>
        
                        {/* 模態(tài)跳轉(zhuǎn) */}
                        <TouchableOpacity
                            onPress={() => this.showModal()}
                        >
                            <Text>模態(tài)跳轉(zhuǎn)</Text>
                        </TouchableOpacity>
                    </View>
                );
            }
        }
    
    

modal 使用 —— 指示器


  • 這邊我們?cè)賮?lái)做一個(gè)經(jīng)常使用的功能 —— 指示器

        export default class One extends Component {
    
            // 構(gòu)造
            constructor(props) {
                super(props);
                // 初始狀態(tài)
                this.state = {
                    isModal:false
                };
            }
        
            showModal() {
                this.setState({
                    isModal:true
                })
        
                setTimeout(() => {
                    this.setState({
                        isModal:false
                    });
                }, 1500)
            }
        
            onRequestClose() {
                this.setState({
                    isModal:false
                });
            }
        
            render() {
                return(
                    <View style={styles.container}>
                        {/* 初始化Modal */}
                        <Modal
                            animationType='fade'            // 淡入淡出
                            transparent={true}              // 透明
                            visible={this.state.isModal}    // 根據(jù)isModal決定是否顯示
                            onRequestClose={() => {this.onRequestClose()}}  // android必須實(shí)現(xiàn)
                        >
                            <View style={styles.modalViewStyle}>
                                <View style={styles.hudViewStyle}>
                                    <ActivityIndicator style={styles.chrysanthemumStyle}></ActivityIndicator>
                                    <Text style={styles.hudTextStyle}>加載中…</Text>
                                </View>
                            </View>
                        </Modal>
        
                        {/* 返回按鈕 */}
                        <TouchableOpacity
                            onPress={() => {{
                                this.props.navigator.pop()
                            }}}
                        >
                            <Text>返回</Text>
                        </TouchableOpacity>
        
                        {/* 顯示指示器 */}
                        <TouchableOpacity
                            onPress={() => this.showModal()}
                        >
                            <Text>顯示指示器</Text>
                        </TouchableOpacity>
                    </View>
                );
            }
        }
    
    
model示例效果.gif

總結(jié)


  • modal 的源碼可以看出,modal 其實(shí)就是使用了 絕對(duì)定位赋朦,所以當(dāng) modal 無(wú)法滿足我們的需求的時(shí)候篓冲,我們就可以通過(guò) 絕對(duì)定位 自己來(lái)封裝一個(gè) modal 了李破,對(duì)吧,時(shí)間關(guān)系壹将,這邊就不講了嗤攻,大伙自己試試就可以了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诽俯,一起剝皮案震驚了整個(gè)濱河市屯曹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惊畏,老刑警劉巖恶耽,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颜启,居然都是意外死亡偷俭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)缰盏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)涌萤,“玉大人,你說(shuō)我怎么就攤上這事口猜「合” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵济炎,是天一觀的道長(zhǎng)川抡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)须尚,這世上最難降的妖魔是什么崖堤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮耐床,結(jié)果婚禮上密幔,老公的妹妹穿的比我還像新娘。我一直安慰自己撩轰,他們只是感情好胯甩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著堪嫂,像睡著了一般偎箫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上溉苛,一...
    開(kāi)封第一講書(shū)人閱讀 51,115評(píng)論 1 296
  • 那天镜廉,我揣著相機(jī)與錄音,去河邊找鬼愚战。 笑死娇唯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寂玲。 我是一名探鬼主播塔插,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拓哟!你這毒婦竟也來(lái)了想许?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤断序,失蹤者是張志新(化名)和其女友劉穎流纹,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體违诗,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漱凝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诸迟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茸炒。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阵苇,靈堂內(nèi)的尸體忽然破棺而出壁公,到底是詐尸還是另有隱情,我是刑警寧澤绅项,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布紊册,位于F島的核電站,受9級(jí)特大地震影響快耿,放射性物質(zhì)發(fā)生泄漏湿硝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一润努、第九天 我趴在偏房一處隱蔽的房頂上張望关斜。 院中可真熱鬧,春花似錦铺浇、人聲如沸痢畜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丁稀。三九已至,卻和暖如春倚聚,著一層夾襖步出監(jiān)牢的瞬間线衫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工惑折, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留授账,地道東北人枯跑。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像白热,于是被迫代替她去往敵國(guó)和親敛助。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容