Реактивное веб-представление: загрузка URL во время выполнения - PullRequest
0 голосов
/ 06 ноября 2018

Я использую собственный веб-вид реагирования для отображения веб-сайта в приложении. Я хотел бы запретить пользователю переходить на другой хост. Для этого я использую обходной путь state :

state = {
        key: 1,
        isWebViewUrlChanged: false,
        url: 'https://google.com'
    };

и изменить состояние в веб-представлении

<WebView
    key={this.state.key}
    url={this.state.url }
    onNavigationStateChange={this.setWebViewUrlChanged}
    />

используя эту функцию

setWebViewUrlChanged = (webviewState) => {
        if (webviewState.url.toString().indexOf('google.com') < 0) {
            this.setState({ url: 'https://google.com' });
            this.setState({ isWebViewUrlChanged: true });

    };

Идея состоит в том, что всякий раз, когда пользователь переходит на страницу, которая не содержит google.com, URL-адрес снова изменяется на google.com, что вынуждает компонент повторно отображаться из-за изменения состояния. Однако это, похоже, не работает. Изменение состояния срабатывает правильно, но веб-просмотр по-прежнему загружает любой URL-адрес, на который переходит пользователь, и я не могу запустить веб-просмотр для загрузки URL-адреса, который я предоставляю.

Что нужно сделать: снова загрузить google.com, если пользователь переходит на другой сервер (например, github.com). Я попробовал ответное-нативное-блокируемое веб-представление (https://www.npmjs.com/package/react-native-blockable-webview), которое, кажется, делает то, что мне нужно, но уже устарело и больше не совместимо, но концепция политики именно то, что нужно искать.

Примечание: я использую это только на Android. Я хорошо знаю, что на NavigationStateChange не работает на iOS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...