2017-07-18 12 views
2

我在每個屏幕上都有此代碼。按下安卓後退按鈕可返回1屏幕。再次按下android後退按鈕不會執行任何操作。只要堆棧中有更多的屏幕,預期的結果就是繼續往前走。少了什麼東西?BackHandler不會返回超過1個屏幕

componentWillMount() { 
    BackHandler.addEventListener('hardwareBackPress',() => { 
     this.props.navigation.goBack(); 
     return true; 
    }); 
} 

componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress') 
} 

回答

4

經過一些試驗和錯誤之後,此代碼按預期工作。我相信我的初始代碼實際上並沒有刪除事件監聽器。

componentWillMount() { 
    BackHandler.addEventListener('hardwareBackPress', this.backPressed); 
} 

componentWillUnmount() { 
    BackHandler.removeEventListener('hardwareBackPress', this.backPressed); 
} 

backPressed =() => { 
    this.props.navigation.goBack(); 
    return true; 
} 
+0

我收到錯誤消息「無法讀取未定義的屬性導航」。可能是什麼問題? –

+0

如果您正在使用react-navigation,請嘗試像設置文檔一樣進行設置。 https://reactnavigation.org/docs/guides/redux#Handling-the-Hardware-Back-Button-in-Android –