Appearance
Router
ts
import { router, navigate } from "@dpg.gg/application";Overview
Router добавляет функционал обработки схемы при определенном url благодаря библиотеке @dpg.gg/router и предоставляет актуальный стор с информацией о текущем роуте.
Middleware
Данная функция расширяет обработчик схемы, чтобы реализовать обработку Router и Page элементов в SchemaElement.
json
{
"element": "Router",
"children": [
{ "element": "Page", "path": "/", "file": "/pages/home.json" },
{ "element": "Page", "path": "/blog", "file": "/pages/blog.json" },
{ "element": "Page", "path": "/blog/:id", "file": "/pages/blog-post.json" },
{
"element": "Page",
"path": "/user/:id",
"children": ["User Profile for: ", "{{$router.params.id}}"]
}
]
}Router
Является обязательным родителем для всех Page элементов. Указывается в качестве аттрибута element.
В children передается массив из SchemaElement с Page
json
{
"element": "Router",
"children": [
{ "element": "Page", "path": "/", "file": "/pages/home.json" }
//...
]
}Page
Компонент который позволяет загружать схемы из других источников благодаря аттрибуту file или отрисовывать children элементы только при совпадении url с path выражением.
Указывается в качестве аттрибута element.
WARNING
В родителях обзательно должен быть компонент Router
json
{
"element": "Router",
"children": [
{ "element": "Page", "path": "/", "file": "/pages/home.json" }
//...
]
}path required
- Type:
string | Regex
Этот аттрибут принимает строку или регулярное выражение, которое используется для сопоставления url и поиска актуальной страницы
json
{
"element": "Page",
"path": "/blog/:id",
"file": "/pages/blog-post.json"
}file optional
- Type:
string
Аттрибут в котором пеердается ссылка на внешнюю схему, котора будет загружена через Loader.
json
{
"element": "Page",
"path": "/blog/:id",
"file": "/pages/blog-post.json"
}WARNING
Если указан file аттрибут, то содержимое children не будет обработано
children optional
Array<SchemaItem>
Принимает схему которая будет отрисована при совпадении path
json
{
"element": "Page",
"path": "/blog/:id",
"children": ["Blog Page for: ", "{{$router.params.id}}"]
}router
Store с актуальным значением Route.
Позволяет так же выполнить навигацию благодаря вызову события navigate
ts
router.emit("navigate", "/path/to/page");navigate()
- Arg:
path: stringrequired - Arg:
replace: booleanoptional
Программная навигация внутри приложения, принимает 2 аргумента, путь на который необходимо перейти и опциональный флаг который не создает в истории запись о переходе.
ts
navigate("/page-2"); // appends a history entry
navigate("/page-3", true); // replaces the current history entryTIP
Функция эквивалентна route в preact-router