2017-07-28 51 views
1

我有三个屏幕MyVault,添加文件和添加回购。从Myvault有一个按钮添加新的文档,点击添加文档将打开。现在在添加文档,如果用户按下后退按钮,然后我想弹出一个确认。我有一个按钮里面添加文档屏幕打开添加回购屏幕,用户可以选择一个回购,当他们点击添加该屏幕将被弹出,添加文档屏幕将刷新回购数据。如果我在ComponentDidMount中添加一个监听器,然后在ComponentWillUnmount中删除它,那么问题是,即使当我按回添加回购时,弹出窗口也会出现。我不想在任何其他屏幕上弹出,我只是想要添加文档。如何为特定屏幕添加Android后端处理程序?

注:我使用的反应本地路由器的流量路由

我已经发布了这个问题这个环节也:https://github.com/facebook/react-native/issues/15248

+0

只需添加BackHandler事件在那个屏幕上。 –

回答

0

我能够用的OnEnter的帮助下做到这一点,的OnExit反应本地路由器通量的道具

0

react-native-router-fluxdocumentation,事件处理程序可以添加到按钮。您可以使用onExit,onLeftonRight。喜欢的东西:

<Scene 
    key="AddDoc" 
    component={AddDoc} 
    onExit={() => console.log('your modal pop up logic')} 
/> 
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; 
相关问题