React Native - установить localStorage в WebView - PullRequest
2 голосов
/ 09 марта 2019

Я бы хотел установить localStorage в компоненте WebView перед загрузкой страницы.

https://facebook.github.io/react-native/docs/webview

Мой вариант использования для этого заключается в том, что мое приложение RN хотело бы открыть страницу на своем веб-сайте. Веб-сайт аутентифицируется при загрузке, проверяя токен в localStorage. Если токена нет, им будет предложено войти в систему. Если пользователь уже вошел в приложение, я бы предпочел, чтобы он мог избежать повторного входа в WebView.

1 Ответ

0 голосов
/ 11 июня 2019

Возможно, вы преодолели проблему. Если нет, вот мое решение.

Вы можете использовать injectedJavaScript свойство WebView и добавить код JavaScript для добавления токена при загрузке страницы.

Пример кода.

  1. Мой код JavaScript, который мне нужно ввести.
let myInjectedJs = `(function(){ let tk = window.localStorage.getItem('tokenKey');
      if(!tk || (tk && tk != '${token}')){
        window.localStorage.setItem('tokenKey', '${token}');
        window.location.reload();
      }
    })();`;

Пояснение кода

Функция вызывается сразу после загрузки. Проверяет, установлен ли tokenKey . Если не установлено, мы устанавливаем новый токен ${token} и перезагружаем страницу.

Примечание. Нам нужно передать функцию в виде строки в injectedJavaScript в веб-просмотре.

  1. Использование myInjectedJs в WebView.
<WebView
    ref={webView => { this.refWeb = webView; }}
    javaScriptEnabled={true}
    injectedJavaScript={myInjectedJs}
    ...

Надеюсь, это решит вашу проблему.

...