Javascript Lifecycle React组件,带有即时加载组件

Javascript Lifecycle React组件,带有即时加载组件,javascript,html,reactjs,Javascript,Html,Reactjs,所以,让我们谈谈组件的生命周期 我有我的模型文件名是Firebase.js,里面有我所有的方法可以触发我的数据 Firebase.js 导出常量getUserShare==>{ 设arr=[]; db.ref`/music/${userID}`。onvalue,快照,key=>{ snapshot.forEachitems=>{ 让元素=items.val; arr.pushelement; }; }; 返回arr; }; 我发现异步操作处理存在问题 将getUserShare方法更改为接受回

所以,让我们谈谈组件的生命周期

我有我的模型文件名是Firebase.js,里面有我所有的方法可以触发我的数据

Firebase.js

导出常量getUserShare==>{ 设arr=[]; db.ref`/music/${userID}`。onvalue,快照,key=>{ snapshot.forEachitems=>{ 让元素=items.val; arr.pushelement; }; }; 返回arr;
}; 我发现异步操作处理存在问题

将getUserShare方法更改为接受回调:

export const getUserShare = (callback) => {
  db.ref(`/music/${userID()}`).on("value", (snapshot, key) => {
    const arrSharing = [];
    snapshot.forEach(items => {
      let element = items.val();
      arrSharing.push(element);
    });
    callback(arrSharing);
  });
};
然后在Profile.js中执行此操作:


您需要显示arrSharing是如何更新的。我使用返回数据的方法更新了帖子,初始状态为:是,它已更新,因此当我在初始状态下使用console.logthis.state.arrSharing时,或者在componentDidMount中,我拥有所有数据,但是渲染不起作用我有这个错误:snapshot.map在运行组件时不是一个函数,你知道上帝吗?我觉得你长得像他@乔纳森:哈哈,你今天做了什么
this.state = {
  arrSharing: [],
}

componentDidMount() {
  getUserShare((arrSharing) => {
    this.setState({ arrSharing })
  })
}