很抱歉,如果我的问题已经提出。 我是反应的初学者,我真的很想学习如何做并理解。 我在我的React.JS项目上使用Firebase,并且无论用户是否连接,我都希望切换标题的一部分。
我认为使用条件渲染,但是在(if)之后的firebase函数上不允许我执行setState()..或我有错误
因此,如果我们能帮助我或者给我跟踪寻找答案的位置,我将非常高兴!
class Header extends Component {
state={
connected: null
}
render(){
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
} else {
}
});
return (
<div className="backgroundheader">
<div className="liensheader">
<a href="/" className="lili" style={{textDecoration: "none"}}>Home</a>
<a href="/event" className="lili" style={{textDecoration: "none"}}>Manifestations</a>
<a href="/commerces" className="lili" style={{textDecoration: "none"}}>Commerces</a>
<a href="/tips" className="lili" style={{textDecoration: "none"}}>Tips</a>
</div>
{/* options header when the user is disconnect */}
{/* <Deader /> */}
{/* options header when the user is connected */}
{/* <Ceader /> */}
</div>
);
}
};
export default Header;
谢谢你,抱歉我的英语不好:/
答案 0 :(得分:0)
onAuthStateChanged
异步触发,因此您不能在render
方法内直接使用它。每当遇到这种情况时,解决方案是将异步值放入状态,然后在render
方法中使用状态。
类似这样:
class Header extends Component {
state={
connected: null
}
componentDidMount() {
firebase.auth().onAuthStateChanged(function(user) {
setState({ user: user });
});
}
render(){
return (
<div className="backgroundheader">
<div className="liensheader">
<a href="/" className="lili" style={{textDecoration: "none"}}>Home</a>
<a href="/event" className="lili" style={{textDecoration: "none"}}>Manifestations</a>
<a href="/commerces" className="lili" style={{textDecoration: "none"}}>Commerces</a>
<a href="/tips" className="lili" style={{textDecoration: "none"}}>Tips</a>
</div>
{ user ? <Deader /> : <Ceader /> }
</div>
);
}
};
export default Header;
另请参阅: