react-native - 加载项目时加载指示器
问题描述
我正在制作 react native expo 应用程序。我有显示来自数据库的文章的页面。当我点击文章按钮时,我会转到文章页面。当我单击按钮时,我将文章的所有数据发送到另一个屏幕。我想在显示数据时加载 ActivityIndicator。请帮我代码:
class HomeScreen extends React.Component {
const { navigate } = this.props.navigation;
return (
<SafeAreaView style={styles.MainContainer}>
<ScrollView
>
<ListView
dataSource={this.state.dataSource}
renderSeparator={this.ListViewItemSeparator}
renderRow={rowData => (
<>
<TouchableOpacity style={{flex:2}}
activeOpacity={.7}
onPress={() => navigate('Articles', {
otherParam: rowData.article_title,
mobile_image: rowData.mobile_image,
article_category: rowData.article_category,
views: rowData.views,
article_content: rowData.article_content
})}>
<Image
source = {{ uri: rowData.mobile_image }}
style={{resizeMode:'cover',width:null,height:null, flex:1, borderRadius:4,
borderWidth:1,
borderColor:'#dddddd'}}
/>
<Text
style={styles.textOfArticle}
>
{rowData.article_title}
</Text>
</TouchableOpacity>
</>
)}
/>
</ScrollView
>
</SafeAreaView>
);
}
}
class ArticleScreen extends React.Component {
static navigationOptions = ({ navigation, navigationOptions }) => {
const { params } = navigation.state;
return {
title: params ? params.otherParam : '',
};
};
state = { animating: true }
componentDidMount = () => {
const { params } = this.props.navigation.state;
const article_title = params ? params.otherParam : '';
const mobile_image = params ? params.mobile_image : '';
const article_category = params ? params.article_category : '';
const views = params ? params.views : '';
const article_content = params ? params.article_content : '';
this.closeActivityIndicator()
}
render() {
const animating = this.state.animating
return (
<View style = {styles.container}>
<ActivityIndicator
animating = {animating}
color = '#bc2b78'
size = "large"
style = {styles.activityIndicator}/>
</View>
)
return (
<SafeAreaView>
<ScrollView>
<Text>{article_title}</Text>
</ScrollView>
</SafeAreaView>
);
}
}
解决方案
为activityIndicator添加一个布尔值,用于显示或隐藏activityIndicator。
state = {
showIndicator: true,
}
closeActivityIndicator = () => {
this.setState({ showIndicator: false });
}
在您的渲染中使用基于showIndicator
值的条件渲染
render() {
const animating = this.state.animating;
return (
<SafeAreaView>
{this.state.showIndicator ? (
<View style={styles.container}>
<ActivityIndicator
animating={animating}
color="#bc2b78"
size="large"
style={styles.activityIndicator}
/>
</View>
) : (
<ScrollView>
<Text>{article_title}</Text>
</ScrollView>
)}
</SafeAreaView>
);
}
推荐阅读
- google-chrome-devtools - Google Chrome DevTools 中的元素选项卡行为不端
- graph - Cypher:在多个路径中循环不同的节点
- google-sheets-api - 在图表中切换行和列
- c++ - 在可能的情况下返回右值引用,或者在不可能的情况下只返回衰减的类型
- powershell - Powershell 函数 - 向我的函数添加参数时,DLL 调用、函数中断
- facebook - 使用测试应用时 pages_read_engagement 需要 Facebook 图形 api 集成权限
- azure - 从 Azure 分支 vnet 访问本地网络
- android - 单选recyclerview item kotlin
- c++ - 在 Visual Studio 2019 中跟踪内存泄漏
- c# - 如何从 .Net Framework 中可用的 HttpContext.Current.Response.Output 转换为 .Net Core 的对象?