3

我正在使用设置为的bottomTabNavigator。对于屏幕,我呈现react-native-webview。正在调用渲染函数,因为我可以看到 console.log 但实际的 webview 直到选项卡变为活动状态才开始加载。我开始的选项卡立即开始加载。lazyfalse

标签

const Tab = () => { 
    console.log('render') // this is being called right away

    return (<WebView 
             onLoadStart={() => console.log('on load start') // this is being called only when tab becomes active (clicking on it) }
             source={{uri:'linkgoes.here'}} />) 
}

航海家

  const TabNavigator = createBottomTabNavigator(
  {
    TabOne: {
      screen: Tab
    },
    TabTwo: {
      screen: Tab
    }
  },
  {
    initialRouteName: 'TabOne',
    lazy: false,
  }
)

这发生在react-navigation从 1.x 升级到 3.x 并升级react-nativereact-native-webview. 我希望 webview 立即开始加载,而不仅仅是在可见时。

4

1 回答 1

9

遇到同样的问题,我对此进行了更多研究:

这个问题在Android上没有出现,所以来自iOS实现

查看本机代码react-native-webview,似乎在didMoveToWindow方法中加载了 webview,对window属性的检查是非 nil,这导致 webview 仅在显示时才加载。

我不认为这可以使用 react-native 解决,所以我在react-native-webview包中提出了一个 PR 来解决这个特定问题:https ://github.com/react-native-community/react-native-webview/pull/813

要在合并之前使用它,请在您的package.json:

"react-native-webview": "https://github.com/philippeauriach/react-native-webview#8b7015037d9c1329e4e65e1978e98c4897a928e6",

不要忘记运行cd ios && pod install,它有时是需要的。

于 2019-08-28T09:44:29.397 回答