0

试图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={() => ...}

然而,它也以同样的错误告终。不变违规:元素类型无效:期望字符串.....但得到:未定义

4

0 回答 0