我有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很陌生,你能帮我理解错误以及如何解决吗?
答案 0 :(得分:13)
这看起来只是访问上下文的问题。当您运行renderHeader
调用的FlatList
方法时,它不知道this
与之相关的内容。
因此,您只需在this.renderHeader = this.renderHeader.bind(this)
方法中设置constructor()
即可。
或者,您还应该能够使用箭头功能来调用它,因为这会自动引用正确的this
上下文。
ListHeaderComponent={() => this.renderHeader()}