Как создать защищенные маршруты с помощью ссылки-app-link toRoute ({render}) - PullRequest
0 голосов
/ 16 февраля 2019

Я рефакторинг кода, чтобы быть СУХОЙ, используя Resact-App-Link для обработки маршрутов.Большинство моих маршрутов защищены, и у меня возникают проблемы с защитой моих маршрутов при использовании MyLocation.toRoute ().

Я успешно создал незащищенные маршруты.Но при попытке защитить маршрут я получаю много загадочных сообщений об ошибках.К сожалению, документация ract-app-link не слишком обширна для опции рендеринга.

//Link object
const wholeNbr = Yup.number().integer().positive()
const MyLocation = new Location('/doc/:id', {id : wholeNbr.required()})

//Unprotected route - Working code:
{ MyLocation.toRoute({ component: MyComponent, invalid: NotFoundPage }, true) }

//Protected route - Not working:
const privateLocation = (isAuthenticated, Component) => (
  isAuthenticated ? 
  (
    <Component />
  ):(
    <Redirect to="/" /> //redirect to login page
  )
)
...
<Router history={history}>
  ...
  <Switch>
  ...
  { CategoryLocation.toRoute({ render: privateLocation(isAuthenticated, MyComponent), invalid: NotFoundPage }, true) }
  ...
  </Switch>
</Router>

Я ожидаю, что компонент будет отображаться, но получаю сообщение об ошибке "Ошибка типа: _render не является функцией"

1 Ответ

0 голосов
/ 17 февраля 2019

Я нашел решение!Я не передавал функцию для рендера.Код должен читать:

{ CategoryLocation.toRoute({ render: () => privateLocation(isAuthenticated, MyComponent), invalid: NotFoundPage }, true) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...