Meteor React: пользовательский объект не определен при начальной загрузке страницы - PullRequest
0 голосов
/ 25 апреля 2018

На странице профиля я хочу запретить незарегистрированным пользователям доступ к странице. Однако объект Meteor.user () не определен при начальной загрузке страницы. Как ждать, пока объект Meteor.user () не будет определен. Когда точно известно, что пользователь не вошел в систему и Meteor.user () загружен?

Вот часть моего метода рендеринга профиля, сопровождаемого методом WithTracker. Как вы можете видеть, объект Redirect визуализируется, когда 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)

1 Ответ

0 голосов
/ 25 апреля 2018
 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.

.
...