Reach start state for RRv7 tutorial

This commit is contained in:
2025-04-03 20:38:19 +02:00
parent b12db15bbe
commit 1c2fdc1a66
4 changed files with 287 additions and 268 deletions

File diff suppressed because one or more lines are too long

19
error.vue Normal file
View File

@@ -0,0 +1,19 @@
<script setup lang="ts">
import type { NuxtError } from '#app';
const props = defineProps<{
error: NuxtError
}>();
// const handleError = () => clearError({ redirect: '/' });
</script>
<template>
<main id="error-page">
<h1>{{ props.error.name }}</h1>
<p>{{ props.error.message }}</p>
<pre v-if="props.error.stack">
<code>{{ props.error.stack }}</code>
</pre>
</main>
</template>

37
layouts/default.vue Normal file
View File

@@ -0,0 +1,37 @@
<template>
<div id="app">
<div id="sidebar">
<h1>Nuxt Contacts</h1>
<div>
<form id="search-form" role="search">
<input
id="q"
aria-label="Search contacts"
name="q"
placeholder="Search"
type="search"
>
<div
id="search-spinner"
aria-hidden
hidden
/>
</form>
<form method="post">
<button type="submit">New</button>
</form>
</div>
<nav>
<ul>
<li>
<a href="/contacts/1">Your Name</a>
</li>
<li>
<a href="/contacts/2">Your Friend</a>
</li>
</ul>
</nav>
</div>
<slot/>
</div>
</template>

View File

@@ -1,49 +1,12 @@
<script setup lang="ts"> <script setup lang="ts">
const { $trpc } = useNuxtApp(); // const { $trpc } = useNuxtApp();
//
const { data: hello } = await $trpc.hello.useQuery({ text: 'client' }); // const { data: hello } = await $trpc.hello.useQuery({ text: 'client' });
// Il typing sul risultato e' corretto, ma sul body no
const { data: otherHello } = await useFetch('/api/test/HELLO', {
method: 'post',
body: {
world: 'MONDO'
}
});
const clientSide = ref<{
trpcData: string,
fetchData: string,
} | null>(null);
async function loadNewData() {
const [{ data: a1 }, { data: b1 }] = await Promise.all([
$trpc.hello.useQuery({ text: 'client' }),
useFetch('/api/test/HELLO', {
method: 'post',
body: {
world: 'MONDO'
}
})
]);
clientSide.value = { trpcData: a1.value?.greeting ?? 'no', fetchData: b1.value?.risultato ?? 'no2' };
}
</script> </script>
<template> <template>
<div> <div id="contact">
<h1>Index Page</h1> <p>Home Page!</p>
<div>
<p>RPC Client output: {{ hello }}</p>
<p>Nuxt API output: {{ otherHello?.risultato }}</p>
</div>
<div>
<button @click="loadNewData">Carica ClientSide</button>
<div v-if="clientSide">
<p>{{ clientSide.trpcData }}</p>
<p>{{ clientSide.fetchData }}</p>
</div>
</div>
</div> </div>
</template> </template>