现在我正试图在Meteor和React中创建登录系统。 我想显示不同的内容,具体取决于用户是否登录。
export default class LoginForm extends Component {
render() {
if (Meteor.userId() === null) return( // if user is not logged in
display HTML stuff);
}
return( // user is logged in
display other stuff
);
}
}
这不起作用,因为Meteor.userId()在登录后总是未定义。
还有其他可能吗?我大火了:
{{#if currentUser}} doStuff{{/if}}
是否可以在React中使用它?
答案 0 :(得分:4)
react-meteor-data包专为集成而设计。 Meteor guide更详细地解释了这一点。
流星数据应作为道具传递给组件。组件应根据道具的更改重新呈现。
答案 1 :(得分:2)
我使用的是ultimatejs:tracker-react
,而不是反应流星数据导出默认类LoginForm扩展了TrackerReact(Component){
render() {
if(Meteor.user())return (...); // user logged in
if (Meteor.user()===null)return(...); // user logged out
//else page is connecting to backend
}
}
答案 2 :(得分:0)
if(Meteor.user()){
}
或
if(Meteor.userId()){
}
应检查登录用户
export default class LoginForm extends Component {
render() {
if (Meteor.userId()){
let elementToBeRendered =
//your elements
<form></form>
}
else{
let elementToBeRendered = //your other elements
}
return (
{elementToBeRendered}
)
}
}
应该为你做的
感谢
答案 3 :(得分:0)
您可以使用Meteor.loggingIn()
进行检查,返回true或false。
可以像这样检查
state = {
isLoggedIn: false,
}
componentDidMount() {
this.setState({ isLoggedIn: Meteor.loggingIn() });
}
render(){
return(
<div>
<b>{isLoggedIn ? is login : is not login}</b>
</div>
);