Я много искал в Интернете и в SO, спросил в чате activtiflux, но не нашел чистого и нехакерского способа рендеринга некоторых компонентов в зависимости от маршрута / пути.
Допустим, у меня есть <Header />
, который должен отображаться на некоторых страницах и должен быть скрыт на других.
Конечно, я могу использовать эту строку в компоненте Header
if (props.location.pathname.indexOf('/pageWithoutAHeader') > -1) return null
Это прекрасно, если /pageWithoutAHeader
уникален. Если мне понадобится та же функциональность для 5 страниц, она станет такой:
if (props.location.pathname.indexOf('/pageWithoutAHeader1') > -1) return null
if (props.location.pathname.indexOf('/pageWithoutAHeader2') > -1) return null
if (props.location.pathname.indexOf('/pageWithoutAHeader3') > -1) return null
Да, я могу хранить маршруты в массиве и писать цикл, который будет более многократно использоваться повторно. Но это лучший и самый элегантный способ справиться с этим вариантом использования?
Я считаю, что это может быть даже ошибочно, например, если я не отображаю заголовок для страницы с маршрутом /xyz
и у меня есть маршруты с UUID, такими как /projects/:id
и id=xyzfoo
, поэтому /projects/xyzfoo
не показывает заголовок, но должен.