javascript - meteor react : User Object undefined at initial page load

标签 javascript reactjs meteor

在个人资料页面上,我想禁止未登录的用户访问该页面。但是,Meteor.user() 对象在初始页面加载时未定义。应该如何等待 Meteor.user() 对象被定义。什么时候确定用户没有登录并且Meteor.user()被加载?

这是我的 Profile 渲染方法的一部分以及 WithTracker 方法。正如您所看到的,当 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 时显示加载指示器.

关于javascript - meteor react : User Object undefined at initial page load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50010811/

相关文章:

javascript - 在Meteor中,定义辅助函数的旧方法与新方法不冲突吗?

javascript - "Route ' HomeScreen ' should declare a screen"发生在我的一个组件上,我不知道为什么

javascript - 如何从 react-redux 中的 Promise 对象获取普通的 json 对象

javascript - 在 Typescript 中声明类型时,类型 'never[]' 的参数不可分配给类型 'never' 的参数

meteor - 如何从客户端中的 Meteor.users 集合中读取角色数组?

meteor - 如何在 Meteor 更新集合时防止内容滚动

javascript - Node v.8.1.3 sort() 方法运行不正确?

JavaScript 正则表达式不匹配

javascript - 不识别 spy 的 Jest 被称为

reactjs - 在 react redux 中的全局状态更改后调度新 Action