Почему response-router-native не отображает мой компонент? - PullRequest
0 голосов
/ 03 февраля 2019

Попытка реализовать утилиты protectedRoute для реактивного проекта, который в основном ищет 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={() => ...}

Однако это также приводит к той же ошибке.Нарушение инварианта: недопустимый тип элемента: ожидается строка ..... но получено: undefined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...