【问题标题】:onNavigationStateChange not working in Android React NativeonNavigationStateChange 在 Android React Native 中不起作用
【发布时间】:2018-04-25 11:36:01
【问题描述】:

你好朋友,我想在我的 React Native 项目中与 Android 集成深度链接,所以下面是我的代码

 <WebView
source={{ uri: this.state.authURL }}
ref="webViewAndroidSample"
renderError={(error) => alert(error)}
startInLoadingState = {false}
javaScriptEnabled = {true}
domStorageEnabled = {true}
onNavigationStateChange = {this._onShouldStartLoadWithRequest}/> 

_onShouldStartLoadWithRequest(e){
    console.log("URL "+e.url);

}

当我点击我的 webview 中的其他链接时,我没有在 e.url 中获得点击链接 url,我记录了任何想法如何解决这个问题?

【问题讨论】:

  • 您在 Web 视图中加载什么样的网站?如果是单页应用,内部链接不会触发navigationStateChange事件。
  • @needsleep 我将此网址用于 webview website 在此网址中我有多个链接,我想在 onNavigationStateChange 中单击 webview 上的单独 href 链接所有这两个链接,在 android 中是否可能?
  • 你可以试试这个答案stackoverflow.com/a/66439365/2869767,因为我遇到了同样的问题

标签: android react-native custom-scheme-url


【解决方案1】:

根据您的评论,我了解您希望在您的 react 本机应用程序中拥有一个 WebView,并在其中加载带有一些打开自定义 url 的链接的 url,这将触发同一应用程序内的其他操作。

我不知道是否有从 WebView 内部打开深层链接的简单方法,但您可以尝试不同的方法。您可以使用 WebView 的 onMessage 方法和 window.postMessage 将消息从网页发送到您的应用程序,如本次博览会小吃所示

https://snack.expo.io/HJSTrfA2f

注意 onMessage 方法。在那里,您可以根据从 Web 视图中获得的消息插入应用的逻辑

onMessage={event => {
      alert('MESSAGE >>>>' + event.nativeEvent.data);
}}

【讨论】:

    【解决方案2】:

    也许onLoadProgress 函数是您应该实现的。因为它和onNavigationStateChange有非常相似的参数,比如urlcanGoBacktitle等。

    react-native-webview 更新到最新版本。

    【讨论】:

      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      相关资源
      最近更新 更多