如何关闭原生态的模态

时间:2017-07-21 08:22:24

标签: reactjs react-native react-redux

我是新手,对原生的发展做出反应。我想在反应中按下模态外部关闭模态组件。以下是我的代码。

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>
    );
}

}

3 个答案:

答案 0 :(得分:7)

只需在Modal中添加此道具

IEnumerable<string>

按下后退按钮

将关闭你的模态
onRequestClose={() => { this.visibleModal(false); } }

修改

以上代码仅适用于document上的Android。

对于两者,

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

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

答案 1 :(得分:0)

问题:

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

解决方案:

只需删除对TouchableWithoutFeedback的函数调用,它将起作用。

    <TouchableWithoutFeedback onPress={() => {}}>
  <Modal animationType={"slide"}
               transparent={true}
               visible={this.state.visibleModal}>

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

答案 2 :(得分:0)

 <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 });