【发布时间】:2018-06-30 04:00:48
【问题描述】:
这个无状态组件正在类组件渲染方法中渲染。然后这个无状态组件将根据条件返回 null 或另一个类组件,但它会给我一个错误。
const AdminTools = () => {
const userID = auth.currentUser;
let userRef = firebase.database().ref("users");
if(userID){
userRef.child(userID.uid).once('child_added', snap => {
if(snap.val().role == 'Admin'){
return <AdminPanel/>
} else {
return null
}
});
}
}
错误:
渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null。
如何根据条件返回某些结果? 我尝试像这样声明变量但同样的错误。
const AdminTools = () => {
let res;
const userID = auth.currentUser;
let userRef = firebase.database().ref("users");
if(userID){
userRef.child(userID.uid).once('child_added', snap => {
if(snap.val().role == 'Admin'){
res = <AdminPanel/>
} else {
res = null
}
});
}
return res;
}
【问题讨论】:
-
我不明白你在这里想要做什么,
AdminTools是某种递归组件吗? -
它是一个无状态组件
-
您实际上不能拥有运行一些异步效果然后自行重新渲染的无状态组件。因为加载/卸载是状态。
-
完成这项工作的最佳机会是什么?
-
@JuanDelaCruz 你可以创建一个有状态的组件,它在
componentDidMount上加载,并在加载数据后初始呈现 null 和无状态的呈现组件。如 Philippe Leefsma 的回答所述
标签: reactjs firebase-realtime-database jsx react-component