(Meteorjs / React)检查用户是否已登录

时间:2016-07-25 13:49:18

标签: meteor reactjs login

现在我正试图在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中使用它?

4 个答案:

答案 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。

你的组件(LoginForm)中的

可以像这样检查

        state = {
                isLoggedIn: false,
            }

            componentDidMount() {
                this.setState({ isLoggedIn: Meteor.loggingIn() });
            }
render(){
    return(
          <div>
             <b>{isLoggedIn ? is login : is not login}</b>
          </div>
);