React native 打开按钮上的反应本机模式单击操作表选项

React native 打开按钮上的反应本机模式单击操作表选项,react-native,modal-dialog,react-native-modal,React Native,Modal Dialog,React Native Modal,我正在使用react本机操作表库。 当我单击操作表上的一个选项并想关闭react native actionsheet时,我想打开react native Mode <ActionSheet ref={o => this.ActionSheet = o} options={[ ( <TouchableOpacity style={styles.actionTextInline} onPress={() => {

我正在使用react本机操作表库。 当我单击操作表上的一个选项并想关闭react native actionsheet时,我想打开react native Mode

<ActionSheet
    ref={o => this.ActionSheet = o}
    options={[
        (
            <TouchableOpacity style={styles.actionTextInline} onPress={() => {
                this.openReservationModal(); this.ActionSheet.hide();
            }}>
                <Icon name="receipt" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        ), (
            <TouchableOpacity style={styles.actionTextInline}>
                <Icon name="call" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        ), (
            <TouchableOpacity style={styles.actionTextInline} onPress={() => { alert("Hello friends !!") }}>
                <Icon name="message" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        )
    ]}
    cancelButtonIndex={2}
    destructiveButtonIndex={-1}
    styles={{
        body: {
            flex: 1,
            backgroundColor: '#FFFFFF',
            borderRadius: 10,
            height: 100
        },
        cancelButtonBox: {
            height: 50,
            backgroundColor: '#FFFFFF',
            paddingLeft: 16,
            paddingTop: 16,
            alignItems: 'flex-start'
        },
        buttonBox: {
            height: 50,
            backgroundColor: '#FFFFFF',
            borderRadius: 10,
            paddingLeft: 16,
            paddingTop: 16,
            alignItems: 'flex-start'
        },
    }}
/>
是关闭操作表的任何方法

<ActionSheet
    ref={o => this.ActionSheet = o}
    options={[
        (
            <TouchableOpacity style={styles.actionTextInline} onPress={() => {
                this.openReservationModal(); this.ActionSheet.hide();
            }}>
                <Icon name="receipt" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        ), (
            <TouchableOpacity style={styles.actionTextInline}>
                <Icon name="call" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        ), (
            <TouchableOpacity style={styles.actionTextInline} onPress={() => { alert("Hello friends !!") }}>
                <Icon name="message" size={24} style={{ color: '#737373' }} />
            </TouchableOpacity>
        )
    ]}
    cancelButtonIndex={2}
    destructiveButtonIndex={-1}
    styles={{
        body: {
            flex: 1,
            backgroundColor: '#FFFFFF',
            borderRadius: 10,
            height: 100
        },
        cancelButtonBox: {
            height: 50,
            backgroundColor: '#FFFFFF',
            paddingLeft: 16,
            paddingTop: 16,
            alignItems: 'flex-start'
        },
        buttonBox: {
            height: 50,
            backgroundColor: '#FFFFFF',
            borderRadius: 10,
            paddingLeft: 16,
            paddingTop: 16,
            alignItems: 'flex-start'
        },
    }}
/>

在上面的代码中,当我执行onPress时,希望调用this.openReservationModal并关闭actionsheet。但是没有发生任何事情。

这是因为react-native actionsheet在内部使用react-native模式,并且您在onpress上编写的语句正在异步运行,这就是为什么没有发生任何事情。 现在,您必须为第二条语句使用timeout,它将工作,只需在onpress中使用以下代码,它将工作:

代码:


我希望这会有所帮助……谢谢:

作为stackoverflow的新用户,如果它对您有效,您应该接受并向上投票……谢谢:@Ravisrinivasan如果它对您有效,请接受并向上投票……谢谢:谢谢您的回答。它正在使用设置超时