mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-21 14:55:04 +00:00
add segment, params and query to server-rendered pages
This commit is contained in:
@@ -251,9 +251,11 @@ function get_page_handler(routes: RouteObject, store_getter: (req: Req) => Store
|
|||||||
|
|
||||||
function handle_page(page: Page, req: Req, res: ServerResponse, status = 200, error: Error | string = null) {
|
function handle_page(page: Page, req: Req, res: ServerResponse, status = 200, error: Error | string = null) {
|
||||||
const get_params = page.parts[page.parts.length - 1].params || (() => ({}));
|
const get_params = page.parts[page.parts.length - 1].params || (() => ({}));
|
||||||
|
const match = page.pattern.exec(req.path);
|
||||||
|
|
||||||
req.params = error
|
req.params = error
|
||||||
? {}
|
? {}
|
||||||
: get_params(page.pattern.exec(req.path));
|
: get_params(match);
|
||||||
|
|
||||||
const chunks: Record<string, string | string[]> = get_chunks();
|
const chunks: Record<string, string | string[]> = get_chunks();
|
||||||
|
|
||||||
@@ -367,16 +369,23 @@ function get_page_handler(routes: RouteObject, store_getter: (req: Req) => Store
|
|||||||
store: store && try_serialize(store.get())
|
store: store && try_serialize(store.get())
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const segments = req.path.split('/').filter(Boolean);
|
||||||
|
|
||||||
const data = Object.assign({}, props, { params: req.params }, {
|
const data = Object.assign({}, props, { params: req.params }, {
|
||||||
child: {}
|
child: {}
|
||||||
});
|
});
|
||||||
let level = data.child;
|
let level = data.child;
|
||||||
for (let i = 0; i < page.parts.length; i += 1) {
|
for (let i = 0; i < page.parts.length; i += 1) {
|
||||||
const part = page.parts[i];
|
const part = page.parts[i];
|
||||||
|
const get_params = part.params || (() => ({}));
|
||||||
|
|
||||||
Object.assign(level, {
|
Object.assign(level, {
|
||||||
// TODO segment
|
segment: segments[i],
|
||||||
props: Object.assign({}, props, preloaded[i]),
|
component: part.component,
|
||||||
component: part.component
|
props: Object.assign({}, props, {
|
||||||
|
params: get_params(match),
|
||||||
|
query: req.query
|
||||||
|
}, preloaded[i])
|
||||||
});
|
});
|
||||||
if (i < preloaded.length - 1) {
|
if (i < preloaded.length - 1) {
|
||||||
level.props.child = {};
|
level.props.child = {};
|
||||||
|
|||||||
Reference in New Issue
Block a user