React Native - 为模态使用道具

React Native - Using Props for Modal

我正在尝试在我的应用程序上使用模态,但我想分成不同的 类,如 App.js 和 /components/modal。我遇到的问题是无法正确传递道具。这是我的代码。

我导入了模态

import InfoModal from '../components/InfoModal';

我创建了状态。

state = {modalVisible: false}

按键可见功能

    setModalVisible = (visible) => {
        
        this.setState({ modalVisible: visible });
    }

调用组件。

render() {

const { modalVisible } = this.state;  

return ( 

<InfoModal visible= {modalVisible} />    

<TouchableOpacity onPress={() => this.setModalVisible(true)} ><Text style={styles.infoButton}>Info</Text></TouchableOpacity>
            )}  

我不明白我应该设置什么道具以及如何正确使用它。

在 Modal 组件中使用状态和方法,并通过使用模态引用来切换它。

const { modalVisible } = this.state;

setModalVisible = (visible) => {
        
        this.setState({ modalVisible: visible });
    }

在InfoModal.js

然后像这样使用它

   render() {
    return ( 
        <InfoModal ref={(c)= this.infoModal=c }visible= {modalVisible} />  
        <TouchableOpacity onPress={() => this.infoModal.setModalVisible(true)} ><Text style={styles.infoButton}>Info</Text></TouchableOpacity>
)

因为你有渲染方法,我假设你的 App.js 是一个 Class 组件。

您可以像那样在构造函数上创建状态

class App extends React.Component {
    constructor(props){
        super(props);
        this.state = {
            modalVisible: false,
        }
    }

// rest of the class
}

你改变模式可见性的函数应该是这样的

setModalVisible = (visible) => {
    this.setState({modalVisible: visible});
}

这就是您在 App 上控制状态的方式 class。

对于你的模式,你将 App.state.modalVisible 作为道具传递。

<InfoModal visible={this.state.modalVisible} />

当您使用 setState 时,所有接收该新值作为 prop 的组件都会正确更新