本章涉及資源下載:react
連接: https://pan.baidu.com/s/1o84o6JS 密碼: htx6android
onShow(模態顯示的時候被調用)functionreact-native
modal的使用很普遍,這邊咱們來看看怎麼讓視圖以模態的形式展現:ide
export default class One extends Component { // 構造 constructor(props) { super(props); // 初始狀態 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} // 根據isModal決定是否顯示 onRequestClose={() => {this.onRequestClose()}} // android必須實現 > <View style={styles.modalViewStyle}> {/* 關閉頁面 */} <TouchableOpacity onPress={() => {{ this.setState({ isModal:false }) }}} > <Text>關閉頁面</Text> </TouchableOpacity> </View> </Modal> {/* 返回按鈕 */} <TouchableOpacity onPress={() => {{ this.props.navigator.pop() }}} > <Text>返回</Text> </TouchableOpacity> {/* 模態跳轉 */} <TouchableOpacity onPress={() => this.showModal()} > <Text>模態跳轉</Text> </TouchableOpacity> </View> ); } }
這邊咱們再來作一個常常使用的功能 —— 指示器函數
export default class One extends Component { // 構造 constructor(props) { super(props); // 初始狀態 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} // 根據isModal決定是否顯示 onRequestClose={() => {this.onRequestClose()}} // android必須實現 > <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> ); } }