如何使用来自网络的数据填充FlatList的标头?

时间:2017-06-07 15:12:51

标签: react-native react-native-flatlist

我有FlatList显示用户的评论,我还希望用用户的个人资料填充标题(这是与获取评论的网络调用不同的网络调用)

以下是render()的样子:

render() {
    return (
      <FlatList
        data = {this.state.comments}
        renderItem = {this.renderComment}
        ListHeaderComponent={this.renderHeader}
        keyExtractor={(comment, index) => comment.id}
      />
    )
  }

然后renderHeader看起来像:

  renderHeader() {
     return (
      <ProfileView user={this.state.profile} />
    )
  }

我在fetch中使用componentWillMount,然后在setState中使用renderHeader以获取数据(此部分工作正常)。 现在我在模拟器上得到的错误是

  

undefined不是一个对象(评估&#39; this.state.profile&#39;)

但是当我删除#Grouby accountid for i in df.groupby(['userid', 'accountid']).max().itertuples(): print(i) #Get range of weeks r = [i for i in range(1,i.weeknumber+1)] #find all unique weeks unique = df[(df.accountid == i.Index[1]) & (df.userid == i.Index[0])].weeknumber.unique() #Substract the one that are already here missing = [e for e in r if e not in unique] #append them to the dataframe for m in missing: line = pd.DataFrame({'userid':[i.Index[0]],"weeknumber":[m], "amount_spent":[0], "accountid":i.Index[1]}) df = df.append(line) 方法时,会正确获取注释。

由于我对RN很陌生,你能帮我理解错误以及如何解决吗?

1 个答案:

答案 0 :(得分:13)

这看起来只是访问上下文的问题。当您运行renderHeader调用的FlatList方法时,它不知道this与之相关的内容。

因此,您只需在this.renderHeader = this.renderHeader.bind(this)方法中设置constructor()即可。

或者,您还应该能够使用箭头功能来调用它,因为这会自动引用正确的this上下文。

ListHeaderComponent={() => this.renderHeader()}