關(guān)于react-native 監(jiān)聽webview頁面返回事件的問題

最近寫了個新rn項目,項目要求是rn內(nèi)嵌一個webview網(wǎng)頁實現(xiàn)全部業(yè)務需求~~鑒于網(wǎng)頁頁面數(shù)量較多,這就涉及到頁面的跳轉(zhuǎn)、返回上頁以及退出APP的問題,由于不做處理的話點擊手機的返回按鈕會直接退出APP,故在網(wǎng)上搜索了相應的解決方案,為防止誤導大家,就不貼圖了,總之,無非都是抄來抄去還是錯的,按照其寫法,多近幾個頁面,返回到網(wǎng)頁首頁以后就得多點n次才能退出APP,差評,經(jīng)過一番操作調(diào)試,貼上本人代碼

export?default?class?App?extends?Component<Props>?{

??constructor(props){

????super(props);

????this.state?=?{

??????backButtonEnabled:false,

??????clicked:false,

????};

}

??onNavigationStateChange?=?navState?=>?{

????this.state.backButtonEnabled=?navState.canGoBack

??};

??render()?{

????return?(

??????<>

??????<StatusBar?backgroundColor="#EB0000"?barStyle="light-content"?translucent={true}?/>

??????<WebView

????????source={{?uri:?********'?}}

????????style={styles.container}

????????ref="webView"

????????onNavigationStateChange={this.onNavigationStateChange}

????????/>

??????</>

????);

??}

??//?監(jiān)聽原生返回鍵事件

??componentDidMount()?{

????setTimeout(()=>{

??????SplashScreen.hide()

????}?,2000);

?this.setState({

??clicked:false

?})

????if?(Platform.OS?===?'android')?{

??????BackHandler.addEventListener('hardwareBackPress',?this.onBackAndroid);

????}

??}

??onBackAndroid?=?()?=>?{

????console.log(this.state.backButtonEnabled)

????if?(this.state.backButtonEnabled)?{

??????this.refs['webView'].goBack();

??????return?true;

????}?else?{

??????if?(this.state.clicked)?{

????????//點過一次了。

????????console.log('back')

????????return?false;

??????}

??????this.state.clicked=true

??????ToastAndroid.show('再按一次退出應用',?ToastAndroid.SHORT);

??????return?true;

????}

??};

}

親測可用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容