Вкладені маршрути
За допомогою маршрутизації можна описувати логіку навігації "підсторінок". Це коли за URL батьківського компонента відображається сторінка батьківського компонента, а при додатковому підмаршруті іще якийсь дочірній вкладений компонент.
Наприклад у нас є сторінка About (/about) на якій відображається якийсь контент про сайт
А ми хочемо прописати додаткові роути, щоб при переході на них у нас в межах цієї сторінки підвантажувався додатковий уточнюючий контент. Наприклад про команду(/about/team), про місію(/about/mission) і про засновників(/about/founders) та партнерів(/about/partners).
Якщо описати маршрути за схемою, вказаною вище, то всі вони будуть незалежними сторінками. А нам потрібно, щоб чотири компоненти були дочірніми і підвантажувалися у зарендерений батьківський компонент додатковим блоком (компонентом). В такому разі такі роути потрібно описати всередині батьківського роуту.
Характерні особливості:
Вкладені маршрути декларативно вкладають в батьківський маршрут
Вкладені маршрути описують відносно батьківського маршруту. Зверніть увагу НЕ повний шлях path="/about/team", а відносний path="team".
Відносні шляхи вказують без символу слеша /. НЕ path="/team", а path="team". Якщо напочатку поставити слеш, то маршрутизація зламається і буде створено новий окремий маршрут.
Повний код вкладеної маршрутизації наведено нижче:
Але цього недостатньо. Обовʼязково потрібно вказати де саме в батьківському компоненті (<About>) ми хочемо за дочірнім роутом підставити відповідний компонент. Для цього використовують спеціальний компонент <Outlet>.
Якщо URL в адресному рядку браузера збігається зі значенням prop path вкладеного маршруту, <Outlet> відрендерить його компонент, інакше він рендерить null та не впливає на розмітку батьківського компонента.
Характерні особливості:
Значення prop to компонента <Link>. так само як і значення prop path вкладеного маршруту - вказують відносно поточного URL.
Компонент <About> рендериться за адресою /about, тому посилання з to="team" буде вести на /about/team.
Якщо необхідно зробити посилання на іншу сторінку, тоді треба вказати шлях повністю, наприклад to="/works".
Last updated