流星用户在客户端始终未定义
Meteor user always undefined in client side
我有一个问题,我是 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
一旦用户登录,Meteor.user()
只是returns当前用户的一个对象。因此,如果没有用户登录,您不能使用currentUser
上的属性.
因此,您的状态可以使用两个值来登录和验证:
const currentUser = this.props.currentUser
this.state = {
loggedIn: currentUser,
verified: currentUser && currentUser.emails[0].verified
};
如果没有登录状态,您的渲染代码将显示 sign-in
元素:
<ButtonToolbar className="pull-left sidebar-toolbar">
{!this.state.loggedIn && <Button>Sign in</Button>}
{ this.state.loggedIn && <Button>Sign out</Button>}
<Button bsStyle="danger">Sign up</Button>
</ButtonToolbar>
然后您可以使用 verified
显示更多信息,例如您的用户尚未验证的通知,并仅显示已验证用户的内容。
安全说明:注意,这只是UI-糖果,如果你真的想阻止未经验证的用户订阅数据或调用某些方法/更新数据,您应该始终检查方法和出版物中的 user.emails[i].verified
。
我有一个问题,我是 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
一旦用户登录,Meteor.user()
只是returns当前用户的一个对象。因此,如果没有用户登录,您不能使用currentUser
上的属性.
因此,您的状态可以使用两个值来登录和验证:
const currentUser = this.props.currentUser
this.state = {
loggedIn: currentUser,
verified: currentUser && currentUser.emails[0].verified
};
如果没有登录状态,您的渲染代码将显示 sign-in
元素:
<ButtonToolbar className="pull-left sidebar-toolbar">
{!this.state.loggedIn && <Button>Sign in</Button>}
{ this.state.loggedIn && <Button>Sign out</Button>}
<Button bsStyle="danger">Sign up</Button>
</ButtonToolbar>
然后您可以使用 verified
显示更多信息,例如您的用户尚未验证的通知,并仅显示已验证用户的内容。
安全说明:注意,这只是UI-糖果,如果你真的想阻止未经验证的用户订阅数据或调用某些方法/更新数据,您应该始终检查方法和出版物中的 user.emails[i].verified
。