React Native FlatList 在使用 extraData 时渲染数据两次
React Native FlatList renders data twice when using extraData
我正在使用带有 firebase 的 React Native(没有 Redux 或类似的东西)。
我有一个 FlatList 通过使用 'on' 方法监听 firebase 的变化。
FlatList 会监听变化,但是当呈现新数据时,它也会呈现新数据和旧数据。所以我有旧数据,然后有附加新数据的旧数据。
我这样检索数据:
firebase.database().ref(`/thisThat/${uid}/arguments/this/`).orderByChild('timestamp')
.on('value', (snapshot) => {
snapshot.forEach((child) => {
thisArr.push(child.val());
});
this.setState({ thisArguments: thisArr });
});
我这样做是因为我希望它被订购(来源:)
我的 FlatList 如下所示:
<FlatList
data={this.state.thisArguments}
renderItem={this.renderItem}
keyExtractor={(item, index) => index}
ListEmptyComponent={this.emptyList}
extraData={this.state}
/>
我认为这可能与我检索数据的方式有关。当我在没有 forEach 的情况下这样做时,一切正常,但它不会呈现有序。
预先感谢您的帮助!
你需要清除 thisArr
才能向其推送新项目
firebase.database().ref(`/thisThat/${uid}/arguments/this/`).orderByChild('timestamp')
.on('value', (snapshot) =>
{
thisArr = []; // <----- here is the fix
snapshot.forEach((child) =>
{
thisArr.push(child.val());
});
this.setState({ thisArguments: thisArr });
});
我正在使用带有 firebase 的 React Native(没有 Redux 或类似的东西)。 我有一个 FlatList 通过使用 'on' 方法监听 firebase 的变化。 FlatList 会监听变化,但是当呈现新数据时,它也会呈现新数据和旧数据。所以我有旧数据,然后有附加新数据的旧数据。
我这样检索数据:
firebase.database().ref(`/thisThat/${uid}/arguments/this/`).orderByChild('timestamp')
.on('value', (snapshot) => {
snapshot.forEach((child) => {
thisArr.push(child.val());
});
this.setState({ thisArguments: thisArr });
});
我这样做是因为我希望它被订购(来源:
我的 FlatList 如下所示:
<FlatList
data={this.state.thisArguments}
renderItem={this.renderItem}
keyExtractor={(item, index) => index}
ListEmptyComponent={this.emptyList}
extraData={this.state}
/>
我认为这可能与我检索数据的方式有关。当我在没有 forEach 的情况下这样做时,一切正常,但它不会呈现有序。 预先感谢您的帮助!
你需要清除 thisArr
才能向其推送新项目
firebase.database().ref(`/thisThat/${uid}/arguments/this/`).orderByChild('timestamp')
.on('value', (snapshot) =>
{
thisArr = []; // <----- here is the fix
snapshot.forEach((child) =>
{
thisArr.push(child.val());
});
this.setState({ thisArguments: thisArr });
});