У меня есть база данных Firebase, в которой много компонентов, и обычно требуется очень много времени для одновременной загрузки в активность в приложении, которое я создаю с помощью Expo.
Я думал, что разбиение на страницы с помощью «See More» или «Load More» после каждых 5 пунктов сделает это быстрее, но я понятия не имею, как это сделать.Я пробовал с: size: 1, firstVisibleRow: 0, leastVisibleRow: 0, greatestVisibleRow: 0, itemsToShow: 1, rowsToDisplay : 1, expanded: false
, в разных местах внутри кода, но ни один из них не работает.
Может кто-нибудь помочь мне решить эту проблему с помощью ListView, пожалуйста?Я прилагаю основной код ниже:
import React from 'react';
import {
ListView,
StyleSheet,
Text,
View,
TouchableHighlight,
AlertIOS
} from 'react-native';
import {
Constants
} from 'expo';
import firebase from './firebase';
const StatusBar = require('../Firebase/StatusBar');
const ActionButton = require('../Firebase/ActionButton');
const ListItem = require('../Firebase/ListItemEventsNew');
const styles = require('../Firebase/styles.js');
export default class Events_new extends React.Component {
constructor(props) {
super(props);
this.state = {
dataSource: new ListView.DataSource({
rowHasChanged: (row1, row2) => row1 !== row2,
}),
//size: 1,
//firstVisibleRow: 0,
//leastVisibleRow: 0,
//greatestVisibleRow: 0,
//itemsToShow: 1,
//rowsToDisplay : 1,
//expanded: false
};
this.itemsRef = this.getRef().child('-Events');
}
getRef() {
return firebase.database().ref();
}
listenForItems(itemsRef) {
itemsRef.on('value', (snap) => {
// get children as an array
var items = [];
snap.forEach((child) => {
items.push({
headline: child.val().headline,
_key: child.key
});
});
this.setState({
dataSource: this.state.dataSource.cloneWithRows(items),
//itemsToShow: 1,
//rowsToDisplay : 1,
//expanded: false
});
});
}
componentDidMount() {
this.listenForItems(this.itemsRef);
}
render() {
return ( <
View style = {
styles.container
} >
<
StatusBar title = "Events" / >
<
ListView dataSource = {
this.state.dataSource
}
renderRow = {
this._renderItem.bind(this)
}
enableEmptySections = {
true
}
style = {
styles.listview
}
/>
<
/View>
)
}
// <ActionButton onPress={this._addItem.bind(this)} title="Add" /> pt butonul Add
_addItem() {
AlertIOS.prompt(
'Add New Item',
null, [{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel'
},
{
text: 'Add',
onPress: (text) => {
this.itemsRef.push({
title: text
})
}
},
],
'plain-text'
);
}
_renderItem(item) {
const onPress = () => {
AlertIOS.alert(
'Complete',
null, [{
text: 'Complete',
onPress: (text) => this.itemsRef.child(item._key).remove()
},
{
text: 'Cancel',
onPress: (text) => console.log('Cancelled')
}
]
);
};
return ( <
ListItem item = {
item
}
onPress = {
onPress
}
/>
);
}
}