这是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商店的操作调度获取数据,然后在我需要的地方检索它,但我认为应该有更短的实现方式吗?我尝试了不同的方法,但由于异步性,我失败了所以......请帮忙!
答案 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>
)
}
}