Meteor takes time to know if there's a {{currentUser}} or not

戏子无情 提交于 2019-12-05 11:19:56

You should use if else conditions instead of noUser helper. And to prevent showing "noUser" block while logging in you have to use {{ loggingIn }} helper. Something like this:

{{#if loggingIn}}
  <p>Loggin in...</p>
{{else}}
  {{#if currentUser}}  
    <li class="nav"><a href="{{pathFor 'create'}}">Post</a>  
    </li>  
    <li class="nav"><a>Ola, {{thisUser}}!</a>  
    </li>  
    <li class="nav"><a href="#" id="logout">Log Out</a>  
    </li>  
  {{else}}  
    <li class="nav"><a href="{{pathFor 'signup'}}">Sign Up</a>  
    </li>  
    <li class="nav"><a href="{{pathFor 'login'}}">Login</a>  
    </li>  
  {{/if}}
{{/if}}

Because Meteor does not know immediately whether user is logged in or not. Therefore you have to use loggingIn helper.

Why don't you refactor your code like this ?

{{#if currentUser}}  
  <li class="nav"><a href="{{pathFor 'create'}}">Post</a>  
  </li>  
  <li class="nav"><a>Ola, {{thisUser}}!</a>  
  </li>  
  <li class="nav"><a href="#" id="logout">Log Out</a>  
  </li>  
{{else}}  
  <li class="nav"><a href="{{pathFor 'signup'}}">Sign Up</a>  
  </li>  
  <li class="nav"><a href="{{pathFor 'login'}}">Login</a>  
  </li>  
{{/if}}

You might want to have a look to http://docs.meteor.com/#meteor_loggingin to show a loading indicator if needed.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!