在 React-Native 中,使用 aFlatList
和 aListHeaderComponent
让我相信 ListHeaderComponent 中的 shouldComponenupdate 函数(尽管已执行)被忽略了。即使我在 shouldComponentUpdate 中返回false ,我的组件也会始终重新渲染。如何阻止 ListHeaderComponent 重新呈现?
<Card>
<FlatList data={comments}
ListHeaderComponent={() => <PostHeader navigation={this.props.navigation} post={this.props.post} />}
style={{flex:1}}
onRefresh={() => this.props.getPost(mediaId, 'newsfeed', true)}
refreshing={isRefreshing}
keyExtractor={(comment) => comment.id}
removeClippedSubviews={false}
renderItem={(comment) => <Comment comment={comment.item} /> } />
<PostComment newComment={newComment}
postComment={() => this.props.postComment(newComment.content, mediaId, profile.id)}
reset={()=> this.props.resetNewComment}
onTextChange={this.props.newCommentTextChanged} />
{Platform.OS.toLocaleLowerCase() === 'ios' &&
<KeyboardSpacer />
}
</Card>
在 FlatList 之前放置会阻止不希望的行为,但这需要将大量包装在 ScrollView 中,而在使用 FlatList 时我宁愿避免这样做。