を更新した後、私は制限さMeteor.userIdを使用してページ()と役割を持っているMeteor.userId()未定義右:Tracker.autorunを適用するには?ページ
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>
}
}
}
観測に必要な部品::私は、コード更新
$が、これはこの=を。
user = Meteor.user(); //Meteor.userId()は機能しません。
ブラウザが削除されました。ユーザーが定義される前に移動するためです。
レンダリングの前にuser/userIdを定義するだけで解決策を見つける必要があります。