react native 自定义对话框 替代Alert

本文介绍如何在React Native中避免使用Alert并创建自定义的Modal对话框,以实现更好的用户交互体验。通过引入react-native-modal库,作者展示了如何构建一个包含确认删除功能的对话框,详细解释了组件的样式设置和交互处理,提供了一段完整的代码示例。
摘要由CSDN通过智能技术生成

对话框的问题:是一个很常见的问题,比如说删除时,就要询问用户,是否确认删除,这是为了避免用户误操作,使用react native时总想到的时用alert去写,实际上alert的样式在Android根本无法修改,所以如果是为了实现对话框,根本就可以完全不用Alert,而改用Modal,我们自己写一个满意的对话框就好了。

下面就是借用react-native-modal 组件修改出来的对话框

import React from "react";
import { Text, View, StyleSheet } from 'react-native';
import Modal from "react-native-modal";


/*
删除对话框
*/
class ModalDialog extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            show: true
        }
    }
    render() {
        return (
            <Modal
                isVisible={this.state.show}
                useNativeDriver={true}                //闪烁的问题
                hideModalContentWhileAnimating={true} //闪烁问题 
                avoidKeyboard={true}                  //键盘出现时,modal向上移动
                style={{ margin: 0, flex: 1, justifyContent: "center",alignItems:"center" }} //margin:0保证覆盖整个屏幕 
                backdropOpacity={0.2}
                onBackdropPress={() => this.handleBackPressModal()}
            >
                <View style={styles.dialogBox}>
                    <Text style={styles.dialogTitle}>确认删除吗?</Text>
                    <View style={styles.btnBox}>
                        <Text  style={[styles.dialogBtn,{color: "#2095F3"}]}>确认</Text>
                        <Text  style={[styles.dialogBtn,{color:"#000"}]}>取消</Text>
                    </View>
                </View>
            </Modal>
        );
    }
    handleBackPressModal(){
        this.setState({ show: false });
    }
}

let styles = StyleSheet.create({
    dialogBox:{
        width: 300,
        backgroundColor: "#fff",
        borderRadius: 5,
        paddingHorizontal: 10,
        paddingVertical: 15
    },
    dialogTitle:{
        textAlign:"center",
        fontSize: 18
    },
    btnBox:{
        display:"flex",
        flexDirection:"row",
        borderTopColor: "#ccc",
        borderTopWidth: 1,
        // backgroundColor:"yellow",
        marginTop: 15,
        paddingTop: 10
    },
    dialogBtn:{
        fontSize:20,
        fontWeight: "900",
        flexGrow:1,
        textAlign:"center"
    }
});

export default ModalDialog;




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tengyuxin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值