Необходимо ввести данные в хранилище сеансов веб-просмотра перед его загрузкой - PullRequest
1 голос
/ 23 мая 2019

Определение проблемы:

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

Что я пробовал:

  1. onLoadStrat из WebView, я внедрил данные с помощью this.webview.injectJavaScript ()

  2. Таким образом я могу вставить данные в хранилище сеансов , но при первой загрузке возникает условие гонки . Инжекция занимает немного времени, и вместо панели инструментов отображается экран входа в систему.

Ожидаемый результат:

Мы хотим добиться инъекции без каких-либо задержек. Предложите мне, если есть какой-то другой способ заставить это работать так, как мы этого хотим.

Жду от вас, ребята. Ваши ценные предложения высоко ценятся.

Спасибо.

1 Ответ

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

То, с чем вы сталкиваетесь, является прямым результатом асинхронной природы React в целом. Вы не можете остановить рендеринг экрана входа в систему (другими словами, функция render() не может быть остановлена). Но то, что вы можете сделать, это то, что вы можете вставить данные в sessionStorage и затем, как только они будут установлены, изменить некоторую переменную в состоянии компонента. Это заставит компонент повторно выполнить рендеринг, но на этот раз вам будут введены данные. Итак, вот шаги:

1.) Пусть он рендерит первым (вы не можете остановить его, и его остановка в любом случае является анти-паттерном).

2.) Введите данные так, как вам нужно.

3.) Измените state компонента, как только будет выполнен шаг 2.

Все это должно происходить очень быстро и не должно быть видно конечному пользователю, imo.

...