mirror of
https://github.com/withastro/astro.git
synced 2024-12-16 21:46:22 -05:00
[ci] yarn format
This commit is contained in:
parent
0f0cc2b9d8
commit
b63960f514
6 changed files with 17 additions and 18 deletions
|
@ -24,8 +24,6 @@ Sometimes, you need to generate many URLs from a single page component. Astro us
|
|||
|
||||
An important thing to keep in mind: Astro is a static site builder. There is no Astro server to run in production, which means that every page must be built ahead of time. Pages that use dynamic routes must export a `getStaticPaths()` function which will tell Astro exactly what pages to generate. Learn more by viewing the complete [API Reference](/reference/api-reference#getstaticpaths).
|
||||
|
||||
|
||||
|
||||
### Named parameters
|
||||
|
||||
Dynamic parameters are encoded into the filename using `[bracket]` notation:
|
||||
|
|
|
@ -7,7 +7,7 @@ Astro supports built-in, automatic pagination for large collections of data that
|
|||
|
||||
## When to use pagination
|
||||
|
||||
Pagination is only useful when you need to generate multiple, numbered pages from a larger data set.
|
||||
Pagination is only useful when you need to generate multiple, numbered pages from a larger data set.
|
||||
|
||||
If all of your data can fit on a single page then you should consider using a static [page component](/core-concepts/astro-pages) instead.
|
||||
|
||||
|
@ -72,7 +72,6 @@ The `page` prop has several useful properties, but the most important one is `pa
|
|||
|
||||
The `page` prop includes other helpful metadata, like `page.url.next`, `page.url.prev`, `page.total`, and more. See our [API reference](/reference/api-reference#the-pagination-page-prop) for the full `page` interface.
|
||||
|
||||
|
||||
## Nested pagination
|
||||
|
||||
A more advanced use-case for pagination is **nested pagination.** This is when pagination is combined with other dynamic route params. You can use nested pagination to group your paginated collection by some property or tag.
|
||||
|
@ -90,7 +89,7 @@ Nested pagination works by returning an array of `paginate()` results from `getS
|
|||
---
|
||||
// Example: /src/pages/[tag]/[page].astro
|
||||
export function getStaticPaths({paginate}) {
|
||||
const allTags = ['red', 'blue', 'green'];
|
||||
const allTags = ['red', 'blue', 'green'];
|
||||
const allPosts = Astro.fetchContent('../../posts/*.md');
|
||||
// For every tag, return a paginate() result.
|
||||
// Make sure that you pass `{params: {tag}}` to `paginate()`
|
||||
|
|
|
@ -32,10 +32,12 @@ export async function getStaticPathsForPage({
|
|||
const mod = await snowpackRuntime.importModule(location.snowpackURL);
|
||||
validateGetStaticPathsModule(mod);
|
||||
const [rssFunction, rssResult] = generateRssFunction(astroConfig.buildOptions.site, route);
|
||||
const staticPaths: GetStaticPathsResult = await mod.exports.getStaticPaths({
|
||||
paginate: generatePaginateFunction(route),
|
||||
rss: rssFunction,
|
||||
}).flat();
|
||||
const staticPaths: GetStaticPathsResult = await mod.exports
|
||||
.getStaticPaths({
|
||||
paginate: generatePaginateFunction(route),
|
||||
rss: rssFunction,
|
||||
})
|
||||
.flat();
|
||||
validateGetStaticPathsResult(staticPaths, logging);
|
||||
return {
|
||||
paths: staticPaths.map((staticPath) => staticPath.params && route.generate(staticPath.params)).filter(Boolean),
|
||||
|
|
|
@ -10,9 +10,8 @@ import { GetStaticPathsResult, Params, Props, RouteData } from '../@types/astro'
|
|||
// });
|
||||
// });
|
||||
|
||||
|
||||
export function generatePaginateFunction(routeMatch: RouteData) {
|
||||
return function paginateUtility(data: any[], args: { pageSize?: number, params?: Params, props?: Props } = {}) {
|
||||
return function paginateUtility(data: any[], args: { pageSize?: number; params?: Params; props?: Props } = {}) {
|
||||
let { pageSize: _pageSize, params: _params, props: _props } = args;
|
||||
const pageSize = _pageSize || 10;
|
||||
const paramName = 'page';
|
||||
|
|
|
@ -130,12 +130,14 @@ async function load(config: RuntimeConfig, rawPathname: string | undefined): Pro
|
|||
validateGetStaticPathsModule(mod);
|
||||
cachedStaticPaths[routeMatch.component] =
|
||||
cachedStaticPaths[routeMatch.component] ||
|
||||
(await mod.exports.getStaticPaths({
|
||||
paginate: generatePaginateFunction(routeMatch),
|
||||
rss: () => {
|
||||
/* noop */
|
||||
},
|
||||
})).flat();
|
||||
(
|
||||
await mod.exports.getStaticPaths({
|
||||
paginate: generatePaginateFunction(routeMatch),
|
||||
rss: () => {
|
||||
/* noop */
|
||||
},
|
||||
})
|
||||
).flat();
|
||||
|
||||
validateGetStaticPathsResult(cachedStaticPaths[routeMatch.component], logging);
|
||||
const routePathParams: GetStaticPathsResult = cachedStaticPaths[routeMatch.component];
|
||||
|
|
|
@ -45,7 +45,6 @@ Global('multiple params', async (context) => {
|
|||
assert.equal($('#page-a').text(), '1');
|
||||
assert.equal($('#page-b').text(), '1');
|
||||
assert.equal($('#filter').text(), 'red');
|
||||
|
||||
}
|
||||
{
|
||||
const result = await context.runtime.load('/posts/blue/1');
|
||||
|
|
Loading…
Reference in a new issue