2

在 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 时我宁愿避免这样做。

4

1 回答 1

2

事实证明,它并没有重新渲染,它正在卸载并安装我的组件,因为:

https://github.com/facebook/react-native/issues/13602#issuecomment-300608431

于 2017-09-06T21:51:03.023 回答