试图protectedRoute
为 react-native 项目实现一个实用程序,它基本上是在寻找 JWT。首先它显示加载指示器,如果不存在 JWT,它将重定向到/login
.
const LoadingComponent = () => (
<View>
<ActivityIndicator/>
</View>
)
class PrivateRoute extends React.Component {
state = {
loading: true,
jwt: null,
}
componentDidMount() {
storage.retrieve('JWT').then(jwt => this.setState({ loading: false, jwt }))
}
render() {
const { children } = this.props;
const { jwt, loading } = this.state;
if (loading) {
return <Route {...children} component={LoadingComponent}/>
}
if (!jwt) {
return <Redirect to="/signup" />;
}
return <Route {...children} />
}
}
export default PrivateRoute;
this.props.children
具有在应用程序中创建路由所需的所有信息。最初的想法是,在加载的情况下,我们只需this.props.children.component
使用自定义加载屏幕覆盖即可。
但是没有给我错误的解决方案是(仅警告):
if (loading) {
return LoadingComponent
}
我也尝试过手动将组件内联为
component={() => <View>{...}</View>
render={() => ...}
然而,它也以同样的错误告终。不变违规:元素类型无效:期望字符串.....但得到:未定义