未触发 React Native WebView onMessage()

时间:2021-07-20 08:10:47

标签: typescript react-native webview postmessage react-native-webview

我在 S3 上托管了一个静态站点,上面有 CloudFront 发行版。

<WebView
  ref={webViewRef}
  scrollEnabled={false}
  source={{ uri: Config.REMOTE_URL }} // CloudFront URL
  sharedCookiesEnabled={true}
  onMessage={(event) => receivedMessageFromWebView(event.nativeEvent.data)}
/>

我们postMessage()上网的方式是这样的

const sendDataToWebView = (dataMap: any) => {
  const dataToPost = { type: 'data', data: dataMap };
  const postMessageJSCode = `
    window.postMessage(${JSON.stringify(dataToPost)}, "*");
    true;
  `;
  if (webViewRef && webViewRef.current) {
    webViewRef.current.injectJavaScript(postMessageJSCode);
  }
}

onMessage 实现如下

const receivedMessageFromWebView = (msgData: any) => {
  console.log('Data Received from WebView -->', msgData); // <-- Not working
};

我在这里遗漏了什么?

  • 反应:17.0.2
  • ReactNative:0.64.2
  • Web 视图:11.6.5

1 个答案:

答案 0 :(得分:0)