我想用一个带有feed的React native和firebase来做一个应用。具有新帖子,修改过的帖子和无限滚动。尝试使用FlatList失败后,我设法使用ListView进行了操作:
<ListView
automaticallyAdjustContentInsets={false}
initialListSize={1}
dataSource={this.state.dataSource}
renderRow={this.renderItem}
renderFooter={this.renderFooter}
onEndReached={this.onEndReached}
onEndReachedThreshold={1}
/>
使用
ComponentDidMount() { firebase.database().ref(`/posts/${this.props.auth.group}`)
.limitToLast(this.state.counter)on('value', async snapshot => {
if (snapshot.val()) {
this.setState({
dataSource:
this.state.dataSource.cloneWithRows(_.reverse(_.toArray(snapshot.val()))) })
}
和
onEndReached = () => {
this.setState({ counter: this.state.counter + 7 });
this.setState({ isLoading: true });
firebase.database().ref(`/posts/${this.props.auth.group}`).off();
firebase.database().ref(`/posts/${this.props.auth.group}`).orderByChild('updatedAt').limitToLast(this.state.counter+7).on('value',
(snapshot) => {
if (snapshot.val()) {
this.setState({ isEmpty: false });
this.setState({
dataSource: this.state.dataSource.cloneWithRows(_.reverse(_.toArray(snapshot.val()))),
});
}
}
}
是否可以使用FlatList做同样的事情?
我没有正确更新this.data(我提供给flatList),而没有使所有帖子都重新渲染(并闪烁)并同时更新新帖子。
答案 0 :(得分:0)
您可以使用FlatList的extraData属性来实现相同的目的。
https://facebook.github.io/react-native/docs/0.56/flatlist#extradata