как общаться между WebView, ориентированным на реакцию, и веб-приложением React?

Я пытаюсь создать связь между webView в react-native и веб-приложением, созданным с помощью React-360 (и, конечно, React). Я использую response-native-webview и следую этому руководству по этой ссылке, чтобы создать сообщение:https://github.com/react-native-community/react-native-webview/blob/master/docs/Guide.md Используя пример на странице, с простой страницей HTML (как в примере в ссылке) с функциейwindow.ReactNativeWebView.postMessage(data) в разделе скрипта работает хорошо:

 <WebView
  source={{uri: this.props.link}}

    ref={( webView ) => this.webView = webView}

    onMessage={event => {
      alert(event.nativeEvent.data);
    }}
  />

Однако моя цель - вызвать мое веб-приложение внутри webView window.ReactNativeWebView.postMessage(data) когда я нажимаю кнопку, например, с такой функцией:

homeButtonClicked() {
    console.log("sei uscito, torna all'App!")
    window.ReactNativeWebView.postMessage(data);
}

К сожалению, когда я нажимаю кнопку, я получаю следующую ошибку:Cannot read property 'postMessage' ofundefined. Как я могу решить эту проблему? Спасибо всем.

2 ответа

Можете ли вы попробовать с функцией тайм-аута, как в документе

setTimeout(function () {
   window.ReactNativeWebView.postMessage("Hello!")
}, 2000)

Я нашел себе решение проблемы в старой проблеме внутри репозитория React-360. Код React-360 не может получить доступ к окну, поэтому необходимо поместить код в собственный модуль, и оттуда можно отправить сообщение в приложение, поддерживающее реакцию. Ссылка на выпуск: https://github.com/facebook/react-360/issues/241

Другие вопросы по тегам