我有三个屏幕MyVault,Add Doc和Add Repo。从Myvault有一个按钮添加新文档,点击Add Doc将打开。现在在添加文档中如果用户按下“返回”按钮,则我想要弹出确认。我在添加文档屏幕中有一个按钮,打开添加回购屏幕,用户可以选择一个回购,当他们点击添加时,将弹出该屏幕,添加文档屏幕将使用回购数据刷新。如果我在ComponentDidMount中添加一个侦听器,然后在ComponentWillUnmount中删除它,那么问题就是即使我按下Add repo,弹出也会出现。我不希望在任何其他屏幕上弹出,我只想在添加文档。
注意:我正在使用react native router flux进行路由
我也在此链接上发布了此问题:https://github.com/facebook/react-native/issues/15248
答案 0 :(得分:0)
根据react-native-router-flux
documentation,可以将事件处理程序添加到按钮中。您可以使用onExit
,onLeft
或onRight
。类似的东西:
<Scene
key="AddDoc"
component={AddDoc}
onExit={() => console.log('your modal pop up logic')}
/>
答案 1 :(得分:0)
我能够在onEnter和onExit的反馈 - native-router-flux
的道具的帮助下做到这一点答案 2 :(得分:0)
尝试以下方法
import React from 'react';
import {View, Text, AlertPlatform,BackAndroid} from 'react-native';
class App extends React.Component {
constructor(props) {
super(props);
}
onBackAndroid = () => {
backButtonPressedOnceToExit ? BackAndroid.exitApp() : "";
backButtonPressedOnceToExit = true;
setTimeout(() => {backButtonPressedOnceToExit = false;}, 2000);
return true;
}
componentWillMount = () => BackAndroid.addEventListener('hardwareBackPress', this.onBackAndroid.bind(this));
componentWillUnmount = () => {
BackAndroid.removeEventListener('hardwareBackPress', this.onBackAndroid.bind(this));
}
render() {
return (
// Your code
);
}
}
export default App;