我一直在尝试使用Tracker React显示登录用户的用户名。 我删除了自动发布包。
/Client/components/dashboard/sidebar.jsx
import React, {Component} from 'react'
import TrackerReact from 'meteor/ultimatejs:tracker-react';
export default class Sidebar extends TrackerReact(Component) {
constructor() {
super();
this.state = {
subscription: {
users: Meteor.subscribe('users')
}
};
}
render() {
return(
<div>
<h1>{Meteor.user().username}</h1>
</div>
);
}
/服务器/出版物/ userPublications
Meteor.publish("users", function () {
return Meteor.users.find();
});
我在console.log(Meteor.user())
时得到一个空对象。但是,我可以使用Meteor DevTools查看当前的用户名。
我错过了哪些谜题?
答案 0 :(得分:0)
我怀疑你可以使用Meteor.user()。用户名
试试这个
<h1>{{currentUser}}</h1>
答案 1 :(得分:0)
您可以使用createContainer进行管理。
import { Meteor } from 'meteor/meteor';
import React, { Component, PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
export class Sidebar extends Component {
static propTypes = {
loggedIn: PropTypes.bool.isRequired,
loggingIn: PropTypes.bool.isRequired,
currentUser: PropTypes.shape({
username: PropTypes.string
})
}
render() {
const { loggingIn, loggedIn } = this.props;
return (
<div>
{(() => {
if (loggingIn) {
return <Loading />
} else if (loggedIn) {
// whatever you want here.
} else {
<h1>Please Log In</h1>
}
})()}
</div>
)
}
}
export default createContainer(() => ({
user: Meteor.user(),
loggedIn: !Meteor.userId(),
loggingIn: Meteor.loggingIn()
}), Sidebar);
这里有一些细节:
Meteor.loggingIn()
是在用户登录时运行的反应变量。发生这种情况时,将不会有用户对象。