Javascript Meteor用户在客户端始终未定义

Javascript Meteor用户在客户端始终未定义,javascript,meteor,Javascript,Meteor,我有一个问题,我是MeteorJS的新手,我想我需要一些帮助。我实现了电子邮件帐户验证。下一步,我想登录用户,但只有当用户被验证。这是一个问题,因为客户端中始终未定义Meteor.user()。你能帮我解释一下我是怎么做错的吗 class App extends Component { constructor(props){ super(props); this.state = { verified: this.props.currentUser.emails

我有一个问题,我是MeteorJS的新手,我想我需要一些帮助。我实现了电子邮件帐户验证。下一步,我想登录用户,但只有当用户被验证。这是一个问题,因为客户端中始终未定义
Meteor.user()
。你能帮我解释一下我是怎么做错的吗

class App extends Component {
constructor(props){ 
    super(props);

    this.state = {
        verified: this.props.currentUser.emails[0].verified
    };
}

render(){

    return (
        <div>
            <Navbar collapseOnSelect fluid>
                <nav className="sideBar-menu">
                    <div className="pull-right sidebar-right">
                        <ButtonToolbar className="pull-left sidebar-toolbar">
                            {!this.state.verified && <Button>Sign in</Button>}
                            {this.state.verified && <Button>Sign out</Button>}
                            <Button bsStyle="danger">Sign up</Button>
                        </ButtonToolbar>                    
                    </div>
                </nav>
            </Navbar>            
        </div>
    )
  }
}

const dataHOC = withTracker((props)=>{
   return {
      currentUser: Meteor.user()
   }
})(App);

export default dataHOC
类应用程序扩展组件{
构造器(道具){
超级(道具);
此.state={
已验证:此.props.currentUser.emails[0]。已验证
};
}
render(){
返回(
{!this.state.verified&&Sign-in}
{this.state.verified&&Sign out}
注册
)
}
}
const dataHOC=withTracker((道具)=>{
返回{
currentUser:Meteor.user()
}
})(App);
导出默认dataHOC
Meteor.user()仅在用户登录后返回当前用户的对象。因此,如果没有用户登录,则不能使用
currentUser
上的属性

因此,您的州可以使用两个值进行登录和验证:

const currentUser=this.props.currentUser
此.state={
loggedIn:currentUser,
已验证:currentUser&¤tUser.emails[0]。已验证
};
如果没有登录状态,则渲染代码将显示
登录
元素:


{!this.state.loggedIn&&登录}
{this.state.loggedIn&&Sign out}
注册
然后,您可以使用
verified
显示进一步的信息,例如用户尚未验证的通知,并仅显示已验证用户的内容


安全注意事项:注意,这只是UI糖果,如果您真的想阻止未经验证的用户订阅数据或调用某些方法/更新数据,您应该始终检查
user.emails[i].已在方法和出版物中验证。

我的回答是否有助于您解决此问题,或者关于此问题,是否仍有未解决的问题?