このリンクContext
では、オブジェクトとは何か、どこで使用するかについて説明しています。「isAdmin」関数は、ユーザー レベルを取得するために Store クラスにアクセスする必要があります。
AuthStore (/stores/auth.js) を作成します -
import { observable, computed } from 'mobx';
import singleton from 'singleton';
export default class Auth extends singleton {
@observable user = null;
@computed get isLoggedIn() {
return !!this.user;
}
login(username, password) {
return post('/api/auth/login', {
username, password
})
.then((res) => {
this.user = res.data.user;
return res;
});
}
logout() {
Storage.remove('token');
return get('/api/auth/logout');
}
}
ルート ファイルで、AuthStore をインポートして、次のように使用できます。
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import Auth from './stores/Auth'; // note: we can use the same store here..
function authRequired(nextState, replace) {
if (!Auth.isLoggedIn) {
replace('/login');
}
}
export default (
<Route name="root" path="/" component={App}>
<Route name="login" path="login" component={Login} />
<Route name="admin" path="admin" onEnter={authRequired} component={Admin}>
<IndexRoute name="dashboard" component={Dashboard} />
</Route>
</Route>
);
このスタックオーバーフローの質問により、より多くの情報が得られるはずです