Jud*_* M. 5 react-native react-modal react-navigation
我有一个带主屏幕的应用程序,在这个屏幕上我正在渲染一个打开的模态button press,在Modal我有一个按钮应该将我导航到另一个屏幕,它导航正确但是当我导航到另一个屏幕时,模态没有没有消失,怎么隐藏?
添加代码进行演示
家:
import React, { Component } from 'react';
import Modal from './Modal';
class Home extends Component {
state = {
isModalVisible: false
};
toggleModal = () =>
this.setState({ isModalVisible: !this.state.isModalVisible });
render() {
const { navigate } = this.props.navigation;
<Modal
visible={this.state.isModalVisible}
navigation={this.props.navigation}
/>
);
}
}
export default Home;
Run Code Online (Sandbox Code Playgroud)
模态:
import React, { Component } from "react";
import Modal from "react-native-modal";
class Modal extends Component {
render() {
const { navigate } = this.props.navigation;
return (
<Modal
isVisible={this.props.visible}>
<Button onPress={() => {navigate('Main')}}>
>Button</Text>
</Button>
</Modal>
);
}
}
export default Modal;
Run Code Online (Sandbox Code Playgroud)
理想情况下,您应该等待setState回调内完成,然后导航到屏幕,因为这些方法是异步的,如果在完成navigate之前调用,可能会破坏状态。setState
家长也应该控制孩子的状态。
onNavigate = () => {
this.setState({isModalVisible: false}, () => this.props.navigation.navigate('Main')
}
<Modal
visible={this.state.isModalVisible}
onNavigate={this.onNavigate}
/>
Run Code Online (Sandbox Code Playgroud)
<Modal
isVisible={this.props.visible}>
<Button onPress={this.props.onNavigate}>
<Text>Button</Text>
</Button>
</Modal>
Run Code Online (Sandbox Code Playgroud)