【问题标题】:How to close the modal in react native如何在本机反应中关闭模态
【发布时间】:2017-12-27 05:02:13
【问题描述】:

我是反应原生开发的新手。我想在反应式中按下模态外部时关闭模态组件。下面是我的代码。

state = {
    visibleModal : false,
};

_hideModal(){
  this.setState({
    visibleModal: true,
  })
}


render(){
    return(
        <View style={
            [styles.container,
                {backgroundColor: this.state.visibleModal ? 'rgba(47, 60, 73, 0.75)': 'white'}
            ]}>

            <Text>Text Behind Modal</Text>

            { this._renderButton('BUTTON', () => this.setState({ visibleModal: true}) ) }
            <TouchableWithoutFeedback onPress={() => {this._hideModal()}}>
            <Modal animationType={"slide"}
                   transparent={true}
                   visible={this.state.visibleModal}>

                      <View style={styles.modalContent}>
                          <Row />
                      </View>

            </Modal>
          </TouchableWithoutFeedback>
        </View>
    );
}

}

【问题讨论】:

    标签: reactjs react-native react-redux


    【解决方案1】:

    只需在 Modal 中添加这个道具

    onRequestClose={() => { this.visibleModal(false); } }
    

    它会在按下返回按钮时关闭你的模式

    <Modal animationType={"slide"}
       transparent={true}
       visible={this.state.visibleModal}
       onRequestClose={() => { this.visibleModal(false); } }
    >
    

    编辑

    根据document,以上代码仅适用于Android。

    对于两者来说,

    您可以添加自定义按钮来关闭模式

    <TouchableOpacity
        onPress={() => {
            this.setState({visibleModal: false})
        } }>
        <Image
            style={[styles.modalBackIcon]}
            source={require('../../theme/images/back-icon.png')} />
    </TouchableOpacity>
    

    【讨论】:

    • 你还没有指定 ;)
    • 我应该将 touchableopacity 包含在模态的内部还是外部
    • OP 询问如何通过单击背景来关闭模式。你还没有回答他的问题。
    【解决方案2】:
     <Modal animationType={"slide"}
               transparent={true}
               visible={this.state.visibleModal}>
                  <TouchableWithoutFeedback onPress={() => {this.close_modal()}}>
                     <View style={styles.modalContent}>
                         ....
                     </View>
                 </TouchableWithoutFeedback>
        </Modal>
    

    这是我的代码示例,当您点击外部以关闭您的模式时

    close_modal函数visibleModal得到假值

    为了经验

    this.setState({ visibleModal: false });
    

    【讨论】:

      【解决方案3】:

      问题:

      在模态外单击时关闭模态。

      解决方案:

      只需删除 TouchableWithoutFeedback 上的函数调用,它就会起作用..

          <TouchableWithoutFeedback onPress={() => {}}>
        <Modal animationType={"slide"}
                     transparent={true}
                     visible={this.state.visibleModal}>
      
                        <View style={styles.modalContent}>
                            <Row />
                        </View>
              </Modal>
      </TouchableWithoutFeedback>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-02
        • 2020-09-09
        • 1970-01-01
        • 2016-09-30
        • 2018-11-03
        相关资源
        最近更新 更多