React-Native,重新加载应用程序后错误消失,但随后再次出现

最近,我遇到了两个非常奇怪的问题。当我尝试从cloud-firestore加载查询时

<Text style={styles.bold}>{user.followers.includes(this.props.user.uid) ? 'UnFollow User' : 'Follow User'}</Text>

我得到错误:  TypeError:未定义不是对象(评估'user.followers.indexOf')。 但是,当我删除此行然后保存文档,然后立即再次添加同一行并保存时,代码将按应如何工作,直到再次关闭我的应用程序,并且错误再次出现。

此外,我再次遇到了由平面清单中的一行引起的相同错误

data={this.props.messages.filter(message => message.members.indexOf(params) >= 0 && message.members.indexOf(this.props.user.uid) >= 0)} 

The error vanishes when I remove the part .filer(..) But then, similarly to the first case, it doesn't appear after I add the line again and save. Error: TypeError: undefined is not an object (near'...this.props.messages.filter...')

我认为该错误可能与从Firebase加载数据有关。提前致谢。

评论
  • 我喜欢他
    我喜欢他 回复

    可能的原因是对象未定义。

    关于追随者的第一个场景: 如果user.followers未定义,并且在您访问包含方法时将导致错误。加载followers数组后,您的应用将正常运行。 您可以简单地添加一个如下所示的复选框,该复选框将在加载属性之前向用户显示该复选框,或者您可以在加载所有内容之后仅呈现内容。

    <Text style={styles.bold}>{user?.followers?.includes(this.props.user.uid) ? 'UnFollow User' : 'Follow User'}</Text>
    

    无论在何处设置了此道具,this.props.messages都会如此,您可以发送一个空数组,也可以仅在该数组具有值时才呈现内容。

    您可以如下更新第二部分

    data={this.props.messages && this.props.messages.filter(message => message.members.indexOf(params) >= 0 && message.members.indexOf(this.props.user.uid) >= 0)}