【发布时间】:2019-06-27 23:12:24
【问题描述】:
我在一个单独的 js 文件中声明了一个 Modal 组件,我试图让它在 onPress 事件发生时出现。我似乎无法切换它。
我在 Google 上搜索并找到了 React Native open modal from different component,但要么我没有得到任何东西,要么这对我不起作用。
我有以下modal.js:
import React, {Component} from 'react';
import {
Modal,
StyleSheet,
Text,
TouchableHighlight,
View,
Alert
} from 'react-native';
import config from '../config/colors';
export default class ModalWindow extends Component {
state = {
modalVisible: false,
};
setModalVisible(visible) {
this.setState({modalVisible: visible});
}
render() {
return (
<View style={styles.container}>
<Modal
animationType="fade"
transparent={false}
visible={this.state.modalVisible}
onDismiss={() => {
console.log('Modal has been closed.');
}}>
<View style={styles.container}>
<View>
<Text>Hello World!</Text>
<TouchableHighlight
onPress={() => {
this.setModalVisible(!this.state.modalVisible);
}}>
<Text>Hide Modal!</Text>
</TouchableHighlight>
</View>
</View>
</Modal>
<TouchableHighlight
onPress={() => {
this.setModalVisible(true);
}}>
<Text>Show Modal</Text>
</TouchableHighlight>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
position: 'absolute',
marginTop: 22
}
});
在一个单独的文件中,我有:
import Modal from '../components/modal';
并在我的渲染中声明组件
... other stuff ...
<View style={styles.modalContainer}>
<Modal isModalVisible={this.state.modalVisible}></Modal>
</View>
... other stuff ...
最后,我设置了一个按钮,这样就可以调用它:onPressAvatar={this.onPressAvatar}
那个方法是:
onPressAvatar = props => {
console.log("press avatar");
this.setState({modalVisible: true});
}
我知道 onPress 有效,因为 console.log() 被触发但模式没有出现。我错过了什么?
【问题讨论】:
标签: react-native