gpt4 book ai didi

reactjs - 在 Web View 中的页面导航之间显示加载指示器

转载 作者:行者123 更新时间:2023-12-04 09:35:21 25 4
gpt4 key购买 nike

我在 Web View 中有一个 URL,例如 https://www.nytimes.com/当前代码在初始页面加载时有效,但如果我在链接中键入点击任何内容,则页面需要一段时间才能加载,并且网站中没有加载指示器。当我们点击任何链接或页面加载时,有什么方法可以在 React Native 中放置一个页面加载指示器,特别是如果它是像下一个 js 那样在服务器端呈现的?

这是我的 ReactNative 代码。

import * as React from 'react';
import {
View,
Text,
Image,
SafeAreaView,
ScrollView,
TextInput,
TouchableOpacity,
} from 'react-native';
import styles from './styles';
import { WebView } from 'react-native-webview';
// import WelcomeSwiper from '../../components/WelcomeScreen/WelcomeSwiper';

import LoadingIcon from '../../components/Loading/index.js';

const WebView = ({ navigation }) => {


return (
<SafeAreaView style={styles.container}>

<WebView
javaScriptEnabled={true}
domStorageEnabled={true}
renderLoading={LoadingIcon}
source={{ uri: 'https://www.nytimes.com/ ' }}
startInLoadingState={true}

/>
</SafeAreaView>
);
};

export default WebView;

这是我的加载组件

import React from 'react';
import { StyleSheet, Platform, ActivityIndicator } from 'react-native';


const LoadingIcon = () => {
return (

<ActivityIndicator
color='#009688'
size='large'
style={styles.ActivityIndicatorStyle}
/>
);
}

export default LoadingIcon;


const styles = StyleSheet.create(
{

WebViewStyle:
{
justifyContent: 'center',
alignItems: 'center',
flex: 1,
marginTop: (Platform.OS) === 'ios' ? 20 : 0
},

ActivityIndicatorStyle: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
alignItems: 'center',
justifyContent: 'center'

}
});

最佳答案

我们可以使用这两种方法得到结果:

  1. 您可以使用 onLoadProgress 方法检查 WebView 是否正在加载某些内容。此方法为您提供一个介于 0 和 1 之间的数字。如果页面已完全加载,它将返回数字 1,更新您的状态并根据它显示 ActivityIndi​​cator:

  2. 您可以使用 onLoadStartonLoadEnd 来更新您的状态并根据它显示 ActivityIndi​​cator!

更多信息请查看:https://github.com/react-native-community/react-native-webview/blob/master/docs/Reference.md#onloadprogress

您也可以使用 ActivityIndi​​cator 由 WebView 包装,*不要忘记此方法适用于 ios for android 将其放在 WebView 之外

enter image description here

这是一个适合您的工作代码示例:

import React, {useState} from 'react';
import {View, Text, SafeAreaView, ActivityIndicator} from 'react-native';
import {WebView} from 'react-native-webview';

function WebViewTest() {
const [isLoading, setLoading] = useState(false);
return (
<SafeAreaView style={{flex: 1}}>
<WebView
source={{uri: 'https://www.nytimes.com/'}}
onLoadStart={(syntheticEvent) => {
setLoading(true);
}}
onLoadEnd={(syntheticEvent) => {
setLoading(false);
}} />
{isLoading && (
<View style={{flex: 10, backgroundColor: 'white'}}>
<ActivityIndicator
color="#009688"
size="large"
// style={{position: 'absolute', left: 200, top: 300}}
/>
</View>
)}
</SafeAreaView>
);
}

export default WebViewTest;

希望对你有帮助

关于reactjs - 在 Web View 中的页面导航之间显示加载指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62619038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com