在使用 React 将我们的 Onsen v1 应用程序(基于 AngularJS1)迁移到 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;
您可以看到我对“Home”和“Login”组件都有我的引用,但是,我想决定要渲染哪个组件。
我尝试了以下方法:使用“Home”作为初始路由,并在 Home 组件构造函数中决定是否需要进入登录页面。
constructor(props) {
super(props);
this.state = {
isOpen: false
};
const authenticated = GetAuthenticated();
if(!authenticated) {
this.props.navigator.pushPage({comp: Login});
}
}
这根本不起作用,登录页面从未显示。
所以基本上,我想做的是在 localStorage 中查找用户凭据(或任何其他存储此类信息的地方),并基于此决定是否加载“主页”页面或“登录”页。