我正在使用 React Native 和 Firebase 实时数据库。我遇到了FlatList
组件的两个问题:
每当列表重新呈现时,我都会收到很多“重复键”错误。我不确定为什么会遇到这个问题,因为我将列表中每个项目的键设置为
snap.key
Firebase 生成的值,这是唯一的(我已经在我的日志中验证了这一点)。该列表有时不会重新呈现,即使我向上或向下滚动它也是如此。这种“有时”的行为让我失望,我无法调试它。我正在使用“.on”方法从 Firebase 实时数据库中获取我的列表。
这是我正在使用的代码:
export default class FlatListPage extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
data: [],
};
}
makeRemoteRequest = () => {
var items = [];
DB.on('value', (snap) => {
this.getItems(snap, items);
items = items.reverse();
this.setState(
{data: items}
);
console.log(this.state.data); //checking key properties are unique
});
}
getItems = (snap, items) => {
snap.forEach((child) => {
items.push({
key: child.key,
status: child.val().status,
location: child.val().location,
});
});
}
componentWillMount(){
this.makeRemoteRequest();
}
render() {
return (
<View>
<FlatList
data={this.state.data}
renderItem={({item}) => <MyListItem item={item} />}
/>
</View>
);
}
}