开发者问题收集

如何在 React Native 中刷新 Web 视图?

2018-03-27
45042

我有一个 webview 作为选项卡 A,在选项卡 B 上有一个待办事项列表平面列表。如果用户在选项卡 B 上的平面列表中添加了一个条目,我希望刷新选项卡 A webview。

我在 webview 控件 https://facebook.github.io/react-native/docs/webview.html 上找不到任何 .refresh()reload() 方法>

有什么想法如何实现这个吗?

3个回答

您可以为 webview 设置一个键

key={this.state.key}

然后您可以通过更新状态来重新加载它

this.setState({ key: this.state.key + 1 }); 
prospegto
2018-08-15

好吧,我通过执行以下操作重新加载 WebView

render() {
  let WebViewRef;
  return (
    <View style={Style1.container}>
      <WebView
        ref={WEBVIEW_REF => (WebViewRef = WEBVIEW_REF)}
        source={{ uri: this.state.site }}
        renderLoading={this.ActivityIndicatorLoadingView}
        startInLoadingState={true}
      />
      <Button title="Reload Me!" onpress={() => { WebViewRef && WebViewRef.reload(); }} />
    </View>
  )
}

在此代码中,我首先声明引用变量 WebViewRef ,然后将其分配给 WebView 作为 ref={WEBVIEW_REF => (WebViewRef = WEBVIEW_REF) ,然后为 reload() 调用此引用,作为 ()=>{ WebViewRef && WebViewRef.reload();

Imran Noor
2018-06-20

react-native-community/react-native-webview 组件在 ref 上有一个 .reload() 方法。

const webViewRef = useRef();
// ...
return (
    <WebView ref={(ref) => webViewRef.current = ref} ... />
)
// ...

然后,您可以使用以下命令重新加载:

webViewRef.current.reload();
Bradley Flood
2020-03-04