【发布时间】:2017-08-29 00:51:08
【问题描述】:
我在我的 React Native 应用程序中有这个 FlatList 组件,我正在尝试将一个项目添加到:
<FlatList
data={this.state.comments}
keyExtractor={this._keyExtractor}
extraData={this.state}
refreshing={this.state.refreshing}
renderItem={({item, index}) => (
<CardComment navigate={this.props.navigation.navigate} report={item.reply}/>
)}
removeClippedSubviews={false}
/>
我正在尝试更新列表并将新项目放在当前 cmets 的顶部。成功请求后,这就是我在 fetch 上所做的事情:
.then((r) => {
this.setState({
refreshing: false,
loadingComments: false,
comments: [
{reply: r},
...comments,
],
});
});
即使我将新元素添加到 comments 列表的开头,它在呈现时仍然出现在 FlatList 的底部。为什么,我该如何解决?
【问题讨论】:
-
正如提问者最终意识到的那样,这实际上与stackoverflow.com/q/45199769/1709587 中的问题相同——在渲染项目数组时需要提供
key属性。请注意,鉴于上面<CardComment ...>上缺少key,此代码应该会引发警告说 VirtualizedList:缺少项目的键,请确保在每个项目上指定一个键属性或提供一个 cu.. ..那是你错过的线索!
标签: javascript android ios reactjs react-native