首页 > 解决方案 > 使用 arrayUnion 会导致内存泄漏

问题描述

我试图将一个状态数组上传到 Firestore 中的一个数组,但是它发出警告“无法对未安装的状态执行更新”。当我进入数据库时​​,我可以看到数据尚未存储。

const dbh = firebase.firestore();
        this.state.players.map(player => {
        if(player.Present === true){
            this.setState({
                enrolledPlayersList: [...this.state.enrolledPlayersList, player.id]
            })
        }
    })
    const finalList = this.state.enrolledPlayersList
    dbh.collection("Groups").doc(this.state.group)
    .collection('Enrolled').doc('ids').update({
         players: firebase.firestore.FieldValue.arrayUnion(finalList)
    })

标签: react-nativegoogle-cloud-firestore

解决方案


我已经通过将与数据库的连接放在 componentDidMount() 函数中解决了这个问题,如下所示

componentDidMount(){
const dbh = firebase.firestore();
    this.state.players.map(player => {
    if(player.Present === true){
        this.setState({
            enrolledPlayersList: [...this.state.enrolledPlayersList, player.id]
        })
    }
})
}

推荐阅读