本章涉及资源下载: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> ); } }