1. 程式人生 > >React-Native 元件之 Modal的使用詳解

React-Native 元件之 Modal的使用詳解

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必須實現 >
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

綜合例子:

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);

執行效果:
這裡寫圖片描述

從 modal 的原始碼可以看出,modal 其實就是使用了 絕對定位,所以當 modal 無法滿足我們的需求的時候,我們就可以通過 絕對定位 自己來封裝一個 modal

相關推薦

React-Native 元件 Modal的使用

Modal元件可以用來覆蓋包含React Native根檢視的原生檢視(如UIViewController,Activity),用它可以實現遮罩的效果。 屬性 Modal提供的屬性有: animationType(動畫型別) PropTypes.oneOf([‘none’, ‘slide’, ‘fade’]

React Native 控制元件 Modal

今天我們來看一下React Native控制元件Modal具體介紹以及實際使用方法,該適配Android、iOS雙平臺。 剛建立的React Native技術交流4群( 458982758 ),歡迎各位大牛,React Native技術愛好者加入交流!同時部落格右側歡迎

React Native的props使用

static rip ng- ont nts -m https oot ner 普通傳參 傳遞 export default class App extends Component<> { constructor() { super(

React Native的state使用

red 什麽 style data return javascrip ets pre fault 什麽是State props是不可改變,只讀的。為了實現交互,就需要用到組件的state。我們將組件看為狀態機,UI是各種各樣的狀態,並在各種各樣的狀態之間可以切換,只需要改

深入React技術棧setState

丟擲問題 class Example extends Component { contructor () { super() this.state = { value: 0, index: 0 } } componentDidMount ()

Android四大元件ContentProvider

1.適用場景 1) ContentProvider為儲存和讀取資料提供了統一的介面 2) 使用ContentProvider,應用程式可以實現資料共享 3) android內建的許多資料都是使用ContentProvider形式,供開發者呼叫的(如視訊,音訊,圖片,

Android四大元件Activity

一、Activity的生命週期: import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { /*建立Activity時被

Android 四大元件---Activity

Android Activity生命週期詳解 1. 什麼是Activity? Activity作為Android四大元件之一,它有著舉足輕重的地位,每一個Activity都會獲得一個用於繪製其使用者介面的視窗,Activity是一個v

安卓四大控制元件BroadcastReceiver

BroadcastReceiver詳解 廣播的概念 Android:系統在產生某個事件時傳送廣播,應用程式使用廣播接收者接收這個廣播,就知道系統產生了什麼事件。 Android系統在執行的過程中,會產生很多事件,比如開機、電量改變、收發簡訊、撥打電話、螢

react-native-scrollable-tab-view

原文連結 在React Native開發中,官方為我們提供的Tab控制器有兩種:TabBarIOS和ViewPagerAndroid。TabBarIOS,僅適用於IOS平臺 ViewPagerAndroid,僅適用於Android平臺(嚴格來講並不算,因為我們還需要自己

[深入剖析React Native]React Native元件Touchable*

Touchable*系列元件封裝了觸控點選的相關事件,比如:觸控、點選、長按、反饋等,官方提供Touchable*系列元件包括四種: TouchableHighlight TouchableNativeFeedback TouchableOpacity To

React Native元件Button

不管在Android還是ios開發中,系統都有Button元件,而在早期的React Native中,系統是不提供Button元件的,一般會使用一個叫做react-native-button的庫。 Button元件 Button元件其實就是 Toucha

React Native和Android整合

前言 按照React Native的迭代速度,使用官網的文件,已經不能很順利的實現React Native和Android的有效整合。React Native最新版本 已經是0.39。為了更好的講解React Native和Android的整合我這裡列出我本地

react-native 呼叫原生模組

 一,繼承 ReactContextBaseJavaModule 實現如下方法 自定義方法用 @ReactMethod註釋 /** * 日誌列印module * Created by ybj on 2016/2/26.

React Native 元件Image

Image元件類似於iOS中UIImage控制元件,該元件可以通過多種方式載入圖片資源。 使用方式,載入方式有如下幾種: /** * Sample React Native App * https://github.com/facebook/react-native * 周少停 * image

react-native-router-flux 使用(三)

我們主要進一步介紹了react-native-router-flux的使用,接下來主要講解 其主要配置引數和api,當前我主要是翻譯官網的學習資料進行學習,我將在後面的章節中實際使用他,通關編寫一個rn版的微博app http://www.cherylgood.cn

React Native元件VirtualizedList

React Native(簡稱RN)列表是基於ScrollView實現的,也就是可以滾動的,然而RN並沒有直接使用IOS或Android的原生列表元件,這是因為RN真正呼叫native程式碼的過程是非同步的,二Native的渲染要求必須同步渲染的。 在早期版本

react native TextInput各個引數,內含事例動圖

TextInput 文字輸入框 React Native中的文字輸入框使用和iOS比較相近,可能是因為 RN 首先封裝iOS端的緣故(這點對iOS開發者來說是個好訊息) TextInput也是繼承自 View,所以 View 的屬性 TextInput 也能使用,一些樣式類

(十二)React-Native-生命週期

一.React-Native生命週期 說到生命週期,大家大概也能想到就是建立、銷燬、狀態改變。RN的元件就是一個狀態機。它接收兩個輸入引數:props和state,返回一個Virtual DOM。和Native一樣,RN也為我們提供相應的鉤子函式。RN的狀態變化取決於pr

[深入剖析React Native]React Native元件Navigator

1.簡介 導航元件Navigator可以讓app在不同頁面進行切換。為達到這樣的功能,Navigator提供了路由物件功能進行區分每個頁面。 我們可以通過renderScene方法,Navaigator根據指定的路由進行渲染指定的介面。 除了以上功能之外,