Meteor React:初始页面加载时未定义的用户对象
Meteor React: User Object undefined at initial page load
在个人资料页面上,我想禁止未登录的用户访问该页面。但是, Meteor.user() 对象在初始页面加载时未定义。应该如何等待 Meteor.user() 对象被定义。什么时候确定用户没有登录并且加载了 Meteor.user()?
这是我的 Profile render 方法的一部分,伴随着 WithTracker 方法。如您所见,当 Meteor.user() 不可用时,会呈现一个重定向对象。
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
时容器内的内容,并在 [=14= 时显示加载指示器].
在个人资料页面上,我想禁止未登录的用户访问该页面。但是, Meteor.user() 对象在初始页面加载时未定义。应该如何等待 Meteor.user() 对象被定义。什么时候确定用户没有登录并且加载了 Meteor.user()?
这是我的 Profile render 方法的一部分,伴随着 WithTracker 方法。如您所见,当 Meteor.user() 不可用时,会呈现一个重定向对象。
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
时容器内的内容,并在 [=14= 时显示加载指示器].