Can't get current user on `useTracker` when refresh page!

I create PrivateRoute route component to check User Logged in
After logged in, I have problem when refresh page (/dashboard).
It can’t get current user immedaitly

const PrivateRoute = ({ children, ...rest }) => {
  const currentUser = useTracker(() => Meteor.user(), [])

  return (
    <Route
      {...rest}
      render={({ location }) =>
        currentUser ? (
          children
        ) : (
          <Redirect
            to={{
              pathname: '/login',
              state: { from: location }
            }}
          />
        )
      }
    />
  )
}
------------
// Routes
      <Route exact path="/">
        <Home />
      </Route>
      <Route exact path="/login">
        <Login />
      </Route>
      <Route exact path="/register">
        <Register />
      </Route>
 ..................
      <PrivateRoute exact path="/dashboard">
        <Dashboard />
      </PrivateRoute>

Please help me…

Probably because Meteor is still logging in. Check Meteor.loggingIn() before rendering your component, should do the trick.

I work for Refresh/reload page, but don’t work when click on Login Button on the first time???
(Or any Link Navbar)

const PrivateRoute = ({ children, ...rest }) => {
  const isLogged = Meteor.loggingIn()
  // const isLogged = Meteor.userId() !== null
  console.log('isLogged', isLogged)

  return (
    <Route
      {...rest}
      render={({ location }) =>
        isLogged ? (
          children
        ) : (
          <Redirect
            to={{
              pathname: '/login',
              state: { from: location }
            }}
          />
        )
      }
    />
  )
}

Now it work fine with

const isLogged = Meteor.userId() !== null
........

:blush: