如何从React / Firebase中的Promise中获取数据?

时间:2016-11-20 22:46:41

标签: javascript reactjs firebase firebase-realtime-database es6-promise

这是React组件的render()方法中的promise。

firebaseRef.child("users/" + auth.uid).once('value').then((snapshot) => {
   let userName = snapshot.val().name;
});

我想获取snapshot.val()。name的数据并将其放在

return(
    <h1>{userName}</h1>
)

我可以通过对redux商店的操作调度获取数据,然后在我需要的地方检索它,但我认为应该有更短的实现方式吗?我尝试了不同的方法,但由于异步性,我失败了所以......请帮忙!

2 个答案:

答案 0 :(得分:1)

我暂时没有完成React,但我认为它是:

firebaseRef.child("users/" + auth.uid).once('value').then((snapshot) => {
   let userName = snapshot.val().name;
   this.setState({ userName: userName });
});

答案 1 :(得分:0)

我打算赞成以前的评论,但他没有提到在渲染方法中这样做是个坏主意。那将是一个无限循环。渲染 - &gt;承诺解决 - &gt;设置状态 - &gt;渲染 - &gt;重复。你应该这样做你的firebase承诺:

class Test extends React.Component{
  constructor() {
    super()
    this.state = {}
  }

  componentDidMount() {
    let { auth } = this.props //or wherever it comes from

    firebaseRef.child("users/" + auth.uid).once('value').then((snapshot) => {
      this.setState({ userName: snapshot.val().name });
   });
  }

  render() { 
    let { userName } = this.state
    return (
      <h1>{userName}</h1>
    )
  }
}