Javascript Meteor用户在客户端始终未定义
我有一个问题,我是MeteorJS的新手,我想我需要一些帮助。我实现了电子邮件帐户验证。下一步,我想登录用户,但只有当用户被验证。这是一个问题,因为客户端中始终未定义Javascript Meteor用户在客户端始终未定义,javascript,meteor,Javascript,Meteor,我有一个问题,我是MeteorJS的新手,我想我需要一些帮助。我实现了电子邮件帐户验证。下一步,我想登录用户,但只有当用户被验证。这是一个问题,因为客户端中始终未定义Meteor.user()。你能帮我解释一下我是怎么做错的吗 class App extends Component { constructor(props){ super(props); this.state = { verified: this.props.currentUser.emails
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].已在方法和出版物中验证。我的回答是否有助于您解决此问题,或者关于此问题,是否仍有未解决的问题?