javascript - Meteor React:初始页面加载时未定义用户对象
问题描述
在个人资料页面上,我想禁止未登录的用户访问该页面。但是,Meteor.user() 对象在初始页面加载时未定义。应该如何等到 Meteor.user() 对象被定义。什么时候可以确定用户没有登录并且 Meteor.user() 被加载?
这是伴随着 WithTracker 方法的我的 Profile 渲染方法的一部分。如您所见,当 Meteor.user() 不可用时,会呈现一个 Redirect 对象。
render() {
const {user} = this.props
console.log(user) //First undefined, later defined. But already renders redirect, so it's not useful
return (
<Container fluid className='p-3 mb-5'>
{/* Not logged in */}
{!user && <Redirect
to={{
pathname: '/SignUp',
state: {
location: '/Profile'
}
}}/>}
{/* Logged in */}
...
</Container>
)
}
export default withTracker(() => {
return {
user: Meteor.user()
}
})(Profile)
解决方案
return (
{ undefined === user ? <Container fluid className='p-3 mb-5'>
{/* Not logged in */}
{!user && <Redirect
to={{
pathname: '/SignUp',
state: {
location: '/Profile'
}
}}/>}
{/* Logged in */}
...
</Container> : 'loading'}
)
您可以尝试在用户是时使用?
和:
运行容器内的内容,并在用户是时undefined
显示加载指示器defined
。
推荐阅读
- list - 迭代 Stream 数据帧中的列值,并使用 Scala 和 Spark 将每个值分配给一个公共列表
- tensorflow - 如何为变形金刚和小队数据集保存-冻结-生成 .pb 或 .ckpt 文件?
- python-3.x - 是什么导致张量流回溯?
- python - 如何将 Fieldalytics API 检索的数据加载到 GeoPandas 中?
- junit5 - 如何在 Junit 5 中使用 Hoverfly 打印模拟数据
- ionic-framework - 您必须在获取标签之前初始化 OneSignal!将此标记操作移动到待处理队列
- sql - 统计每个角色 SQL 的学生人数
- youtube-data-api - 如何通过 API 搜索自动生成的主题频道
- web-scraping - Power Automate 桌面网页抓取
- android - 如何让 Firebase 测试实验室不为 API 30 设备跳过我的 android 应用程序?