簡體   English   中英

如何從我的 WebView 中觸發回 react-native 的動作?

[英]How can I trigger action back in the react-native from my WebView?

我有一個組件<PaymentView /> ,該組件顯示一個信用卡/cvc/到期表單。

它使用react-native-webview顯示在 react-native 應用程序中。

我必須觸發表單事件並在提交時更新視圖,提交按鈕當前位於 WebView 內。

  • 從 webview 中按下提交<Button />后,如何關閉 WebView 並顯示成功消息?
  • 如果我無法從我的組件中獲取 webview 提交事件,我如何從我的組件中讀取 webview 中的表單?

在 web 應用程序中處理支付 iframe 時,我通常會遇到這個問題。 我認為解決方案是相同或相似的方法。

檢查postMessage API。

我們通常做的是在 iFrame(我猜是你的 webView)端發出一個事件。 通常是一個導航事件,然后我們在我們的應用程序中全局監聽該事件,例如:

    <script>

        var defaultResponse = {
            status: 0,
            code: '',
            message: ''
        }

        function queryParamsToObject(search = '') {
            return search ? JSON.parse('{"' + search.replace(/&/g, '","').replace(/=/g, '":"') + '"}') : ''
        }

        function getResponseObject() {
            return queryParamsToObject(decodeURI(location.search).substring(1))
        }

        var response = getResponseObject()

        console.log('window:child', window.parent, response)
        try {
            window.parent.postMessage(response, '*')
        } catch (e) {
            console.log('window:child:send:error', e)
        }

    </script>

在快速搜索react-native-webview時,我發現他們已經在使用它

希望能幫助到你

看看這個

  render() {
const html = `
  <html>
  <head></head>
  <body>
    <script>
      setTimeout(function () {
        window.ReactNativeWebView.postMessage("Hello!")
      }, 2000)
    </script>
  </body>
  </html>
`;

return (
  <View style={{ flex: 1 }}>
    <WebView
      source={{ html }}
      onMessage={event => {
        alert(event.nativeEvent.data);
      }}
    />
  </View>
);

} }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM