Onsen v1 アプリ (AngularJS1 ベース) を React を使用して Onsen v2 に移行しているときに、ちょっとした問題に遭遇しました: ユーザー認証に関するロジックの実装 (「保存された資格情報」がない場合にログイン画面にリダイレクトする)
これが私のアプリの構造です...
エントリ ポイントは、次のような App.js ファイルです。
import React from 'react';
import {Navigator} from 'react-onsenui';
import Home from './Home';
import Login from './Login';
class App extends React.Component {
renderPage(route, navigator) {
route.props = route.props || {};
route.props.key = route.comp.displayName;
route.props.navigator = navigator;
return React.createElement(route.comp, route.props);
}
render() {
return (
<Navigator
initialRoute={{comp: Home}}
renderPage={this.renderPage}
/>
);
}
}
export default App;
「ホーム」コンポーネントと「ログイン」コンポーネントの両方の参照があることがわかりますが、どちらのコンポーネントをレンダリングするかを決定したいと考えています。
私は次のことを試しました: 「ホーム」を initialRoute として使用し、ログイン ページに移動する必要があるかどうかをホーム コンポーネント コンストラクターで決定します。
constructor(props) {
super(props);
this.state = {
isOpen: false
};
const authenticated = GetAuthenticated();
if(!authenticated) {
this.props.navigator.pushPage({comp: Login});
}
}
これは単に機能せず、ログイン ページが表示されませんでした。
基本的に、私がやりたいことは、localStorage でユーザー資格情報 (またはこれらの種類の情報を保存するための他の場所) を調べ、これに基づいて、「ホーム」ページまたは「ログイン」ページをロードするかどうかを決定することです。ページ。