gpt4 book ai didi

javascript - 如何关闭 React Native Modal?

转载 作者:行者123 更新时间:2023-12-01 09:43:27 25 4
gpt4 key购买 nike

我目前遇到了一个问题,我可以很好地打开我的 react-native 模式,但是一旦打开,我似乎无法关闭它。我大约三周前才开始使用 react-native,所以我对此非常陌生。

我已经尝试实现我在网上找到的解决方案,但似乎没有什么对我有用。打开功能很棒,似乎工作得很好,但是当谈到关闭模态时,我尝试过的所有事情似乎都没有赋予模态这种能力。我无法在任何地方为我的确切问题找到可靠的解决方案!

这就是我打开模式的方式。

constructor(props) {
super(props);
this.state = {
refreshing: false,
display: false
};
}

triggerModal() {
this.setState(prevState => {
return {
display: true
}
});
}

<View>
<Button onPress = { () => this.triggerModal() } title = "Open Modal"></Button>

<DisplayModal display = { this.state.display } />
</View>

这是模态本身,我正在尝试使用按钮将其关闭。
import React from 'react'
import { Modal, View, Image, Text, StyleSheet, Button } from 'react-native';

const DisplayModal = (props) => (
<Modal visible={ props.display } animationType = "slide"
onRequestClose={ this.display }>
<View>
<Button title="close" onPress = { () => !props.display }></Button>
</View>
</Modal>
)

export default DisplayModal;

由于我对 react-native 的熟悉程度有限,因此很难理解框架的某些方面是如何运作的……我可能只是在代码的某个地方犯了一个愚蠢的错误。

感谢您对这个问题的任何帮助!

最佳答案

您几乎已经完成了,但是我们可以进行一些调整以使其按您的意愿工作。

作为您的DisplayModal没有自己的状态,该状态必须由其父组件控制。因此,考虑到这一点,我们可以执行以下操作。首先传递一个名为 closeDisplay 的附加属性。到DisplayModal .我们将传递一个设置 display 的函数。位于 state 的属性(property)至false .

<DisplayModal 
display={this.state.display}
closeDisplay={() => this.setState({display: false})} // <- we are passing this function
/>

然后在我们的 DisplayModal组件我们将调用该函数来关闭模式。所以你的 DisplayModal组件应如下所示:
const DisplayModal = (props) => (
<Modal
visible={ props.display }
animationType = "slide"
onRequestClose={ this.display }>
<View>
<Button
title="close"
onPress = { () => props.closeDisplay() }> // <- here we call the function that we passed
</Button>
</View>
</Modal>
)

注意 onPress Button 的功能在 DisplayModal组件,我们调用函数 closeDisplay() .然后,该函数设置父组件的状态,然后将其传递回 DisplayModal导致它隐藏的组件。

关于javascript - 如何关闭 React Native Modal?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54487194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com