✨ Add data fetching on the about page
This commit is contained in:
@@ -1,9 +1,22 @@
|
|||||||
import type { RouteDataFunc } from 'solid-app-router';
|
import type { RouteDataFunc } from 'solid-app-router';
|
||||||
|
import { createResource } from 'solid-js';
|
||||||
|
|
||||||
|
function wait<T>(ms: number, data: T): Promise<T> {
|
||||||
|
return new Promise((resolve) => setTimeout(resolve, ms, data));
|
||||||
|
}
|
||||||
|
|
||||||
|
function random(min: number, max: number): number {
|
||||||
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetchName(): Promise<string> {
|
||||||
|
return wait(random(500, 1000), 'Solid');
|
||||||
|
}
|
||||||
|
|
||||||
const AboutData: RouteDataFunc = () => {
|
const AboutData: RouteDataFunc = () => {
|
||||||
return {
|
const [data] = createResource(fetchName);
|
||||||
name: 'about',
|
|
||||||
};
|
return data;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default AboutData;
|
export default AboutData;
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
import { Suspense } from 'solid-js';
|
import { Component, createEffect, Suspense } from 'solid-js';
|
||||||
import { useData } from 'solid-app-router';
|
import { useData } from 'solid-app-router';
|
||||||
|
|
||||||
export default function About() {
|
export default function About() {
|
||||||
const data = useData();
|
const name = useData<() => string>();
|
||||||
|
|
||||||
|
createEffect(() => {
|
||||||
|
console.log(name());
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section class="bg-pink-100 text-gray-700 p-8">
|
<section class="bg-pink-100 text-gray-700 p-8">
|
||||||
@@ -10,11 +14,12 @@ export default function About() {
|
|||||||
|
|
||||||
<p class="mt-4">A page all about this website.</p>
|
<p class="mt-4">A page all about this website.</p>
|
||||||
|
|
||||||
<Suspense>
|
<p>
|
||||||
<pre class="mt-4">
|
<span>We love</span>
|
||||||
<code>{JSON.stringify(data, null, 2)}</code>
|
<Suspense fallback={<span>...</span>}>
|
||||||
</pre>
|
<span> {name()}</span>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
</p>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user