У меня есть запретная страница с помощью Meteor.userId() и роль:Как применить Tracker.autorun? Meteor.userId() не определены сразу после освежающей страницы
class AdminPage extends Component {
render() {
return (
<div>
{
Roles.userIsInRole(Meteor.userId(), 'admin') ? (
<Master_Layout renderCenter={<Article_Editor />}/>
) : browserHistory.push('/')
}
</div>
)
}
}
Этого код перенаправляет пользователь «/» после обновления, потому что Meteor.userId() является не определено. Как я могу убедиться, что Meteor.userId() не определен до отображения страницы после обновления?
Я искал ответы. Я нашел Tracker.autorun в качестве решения, но я не понимал, как его применять.
Благодарим за помощь. Я обновил код:
constructor(props) {
super(props);
this.state = { user: '' };
}
componentDidMount() {
var $this = this;
Tracker.autorun(function() {
let user = Meteor.user();
if(user != undefined) {
$this.setState({ user: user });
}
});
}
render() {
if(Roles.userIsInRole(this.state.user, 'admin')) {
return (
<div>
<Master_Layout renderCenter={<Article_Editor />} />
</div>
)
} else {
return <div>loading...</div>
}
}
}
Наблюдаемые необходимые детали:
$ это = это;
пользователь = Meteor.user(); //Meteor.userId() не работает.
удален browserHistory, потому что он будет перемещаться до пользователя.
Теперь мне просто нужно найти решение для определения user/userId перед установками рендеринга.