React native 在react导航标题中使用时,react本机弹出对话框无法关闭
我在我的RN项目中使用“react native popup dialog”和“react navigation”。我想在标题上添加一个用于搜索的按钮。单击按钮打开一个对话框,其中包含要搜索的输入字段 在“react native popup dialog”中,我需要调用show()方法来显示popUpDialogReact native 在react导航标题中使用时,react本机弹出对话框无法关闭,react-native,react-navigation,react-native-popup-dialog,React Native,React Navigation,React Native Popup Dialog,我在我的RN项目中使用“react native popup dialog”和“react navigation”。我想在标题上添加一个用于搜索的按钮。单击按钮打开一个对话框,其中包含要搜索的输入字段 在“react native popup dialog”中,我需要调用show()方法来显示popUpDialog this.popUpDialogForSearch.show(); 在“react navigation”中,我需要为“react navigation”设计的静态区域中的按钮设置
this.popUpDialogForSearch.show();
在“react navigation”中,我需要为“react navigation”设计的静态区域中的按钮设置onPress方法
constructor(props) {
super(props);
this.state = {
dialogVisible: false,
};
}
static navigationOptions = ({ navigation }) => {
return {
header: <Header hasSegment>
<Left>
<Button transparent onPress={() => navigation.navigate("Home")}>
<Icon name="ios-arrow-back" style={styles.icon}/>
</Button>
</Left>
<Body style={{ flex: 1.45 }}>
<Segment style={styles.segmentStyle}>
<Button style={styles.leftRoundBorder} first><Text>查看待办列表</Text></Button>
<Button onPress={() => { navigation.navigate("AddNormalStoreIn"); }} ><Text>添加一般入库单</Text></Button>
<Button onPress={() => { navigation.navigate("AddConstructionStoreIn"); }} style={styles.rightRoundBorder} last><Text>添加施工入库单</Text></Button>
</Segment>
</Body>
<Right style={styles.iconPosition}>
<Button transparent>
<Icon name="search" onPress={ navigation.getParam("popUpDialog") } style={styles.icon}/>
</Button>
</Right>
</Header>,
};
};
componentDidMount() {
this.props.navigation.setParams({ popUpDialog: this._searchPopUpDialog });
this.fetchFindStoreIn();
}
componentDidUpdate() {
if (this.state.dialogVisible) {
this.popUpDialogForSearch.show();
}
}
_searchPopUpDialog = () => {
this.setState({ dialogVisible: true });
};
....
<PopupDialog
ref={ (popUpDialog) => this.popUpDialogForSearch = popUpDialog }
onDismissed={ () => this.setState({ dialogVisible: false }) }
width={0.7}
height={0.7}
containerStyle={{
// TODO: dynamic height
marginTop: -50,
}}
dialogTitle={
<DialogTitle
title="入库单搜索"
haveTitleBar={false}
/>
}>
{ <SearchForm /> }
</PopupDialog>
构造函数(道具){
超级(道具);
此.state={
dialogVisible:false,
};
}
静态导航选项=({navigation})=>{
返回{
标题:
导航。导航(“主页”)}>
查看待办列表
{navigation.navigate(“AddNormalStoreIn”);}>添加一般入库单
{navigation.navigate(“AddConstructionStoreIn”);}}style={styles.rightRoundBorder}last>添加施工入库单
,
};
};
componentDidMount(){
this.props.navigation.setParams({popUpDialog:this.\u searchPopUpDialog});
this.fetchFindStoreIn();
}
componentDidUpdate(){
if(this.state.dialogVisible){
this.popUpDialogForSearch.show();
}
}
_searchPopUpDialog=()=>{
this.setState({dialogVisible:true});
};
....
this.popUpDialogForSearch=popUpDialog}
onDismissed={()=>this.setState({dialogVisible:false})
宽度={0.7}
高度={0.7}
集装箱运输方式={{
//TODO:动态高度
马金托普:-50,
}}
对话标题={
}>
{ }
现在,我的代码无法按预期关闭对话框,如果一个对话框没有关闭,其他页面中的另一个对话框将无法打开
这让我有一段时间感到紧张和困惑
有没有在静态区域调用实例方法的建议?谢谢。我发现当我触发“远程调试JS”模式时,问题就会出现 一旦我禁用此模式,弹出对话框可以关闭 我现在真的不知道根本原因,我会跟踪的 谢谢