Как мне вернуться в веб-просмотр?Я использую пакет реагировать на навигацию - PullRequest
3 голосов
/ 12 марта 2019

Я установил пакет реагировать-навигацию в реагирующий-родной

Я реализовал навигацию по вкладкам, и один из них реализован в формате веб-просмотра.

Моя проблемачто если я нажимаю физическую кнопку «Назад» на Android, я перехожу из самого приложения на предыдущую вкладку, а не из веб-просмотра.

Я уже применил кнопку «Назад» для веб-просмотра в Интернете, ноЯ этого не делал.

Я пытался отобразить журнал onNavigationStateChange при отладке, но он не обновлялся при перемещении URL-адреса после его загрузки при первом запуске.Вот код, который я реализовал:

import React from "react";
import {BackHandler} from "react-native";
import {WebView} from "react-native-webview";

class SermonScreen extends React.Component {
    constructor(props) {
        super(props);
    }
    static navigationOptions = {
        header: null
    };

    componentDidMount() {
        BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
    }

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

    _onNavigationStateChange(navState) {
        console.log(navState);
        this.setState({
            canGoBack: navState.canGoBack
        });
    }

    handleBackButton = () => {
        console.log(this.state);
        if (this.state.canGoBack === true) {
            this.webView.goBack();
            return true;
        } else {
            return false;
        }
    };

    render() {
        return (
            <WebView
                source={{uri: 'https://m.youtube.com/channel/UCw3kP3qCCF7ZpLUNzm_Q9Xw/videos' }}
                ref={(webView) => this.webView = webView}
                onNavigationStateChange={this._onNavigationStateChange.bind(this)}
            />
        );
    }
}

export default SermonScreen;
...