react-native - 使用 this.state.array.map 的 React-native 重新加载应用程序空白屏幕
问题描述
export default class App extends React.Component {
constructor() {
super();
this.itemRef = firebaseApp.database().ref();
this.state = {
myArray: [],
};
}
componentDidMount() {
//get database from firebase
//................
this.setState({
// load database into myArray
// Example:
//myArray: myDatabaseFirebase
})
}
render() {
return (
<ViewPager>
{this.state.myArray.map(item => {
return (
<Text>Something from database </Text>
)
})}
</ViewPager>
);
}
}
当我运行应用程序时它显示空白屏幕,我认为 myArray 没有加载数据库,因此它为空并且应用程序显示空白屏幕。我该如何解决这个问题?
解决方案
在第一次渲染时,UI 会被加载,并且由于 firebase 数据的异步性质,加载需要时间,因此您需要检查 myArray 中的数据是否可用。由于您最初将 myArray 定义为空所以我们可以直接检查长度。只需添加条件
return (
<ViewPager>
{this.state.myArray.length > 0 && this.state.myArray.map(item => {
return (
<Text>Something from database </Text>
)
})}
</ViewPager>
);
推荐阅读
- c# - 在避免stackoverflow异常的同时使用stackalloc的任何方式
- reactjs - React Router + Animation 库问题:组件在使用 react-router-dom 卸载之前不会动画
- java - 为什么部署在heroku中的tomcat中的PUT方法的请求参数始终为NULL
- npm - “找不到命令:create-nuxt-app”有什么问题
- python - Python 中 PillowWriter 导出到 .gif 时出错
- flutter - 颤动中的不可滚动网格
- python - 如何将 keras 顺序 API 转换为功能 API
- powershell - 如何在代码执行期间禁用 Powershell GUI 按钮?
- sapui5 - sap.ui.table.Table 和可见行数
- python - 如何使用列表推导对 Python 3 中的矩阵执行数学运算?