Как работать с несколькими макетами в приложениях ReactJS

Приложение с разными макетами - обычное дело. Предположим, у нас есть приложение с двумя макетами: main layout и dashboard layout.

В этом случае мы должны каким-то образом указать нашему приложению, чтобы оно отображало правильный вид для определенного URL / страницы. Я думаю, что лучше всего поместить логику в Router. Давайте сначала создадим обычный роутер с react-router. Должно получиться так:

Теперь давайте изложим нашу логику. Нам нужно создать слегка модифицированную версию <Route /> компонента react-router. Я назову это <AppRoute />

AppRoute принимает компонент как обычно Route. Но также он принимает layout, который будет либо main layout, либо dashboard layout.

Теперь мы можем обновить наш Router новым AppRoute компонентом.

Последняя вещь. Нам нужно создать два макета, которые мы использовали выше.

При таком простом подходе у нас может быть столько макетов, сколько нам нужно.

Спасибо за прочтение!