Warum kann ich für eine if-Anweisung in einem Nuxt 3-Skripteinstellungs-Tag nicht auf useAsyncData zugreifen?
P粉105971514
2023-08-26 09:47:58
<p>Ich verwende die Prismic-API, um einige Daten abzurufen, die ich in einer Nuxt3-Vorlage anzeigen möchte. </p><p>
Alles funktioniert einwandfrei. Ich möchte nur eine 404-Seite anzeigen, wenn keine Daten vorhanden sind, und keinen 500-Fehler. Ich habe eine Prüfung hinzugefügt, um zu sehen, ob die Daten leer sind: </p>
<pre class="brush:html;toolbar:false;"><script setup>
const route = useRoute()
const name = route.params.werke;
const { client } = usePrismic()
const { data: werk } = waiting useAsyncData('werk', () => client.getByUID("werk", name))
if (!werk.uid) {
throw createError({ statusCode: 404, statusMessage: 'Seite nicht gefunden' })
}
</script>
</pre>
<p>Das Problem ist, dass im Abschnitt <code>if (!werk.uid)</code> immer leer ist. Deshalb erhalte ich immer einen 404-Fehler. In meiner Vorlage ist werk.uid nicht leer, daher liegt meiner Meinung nach ein Problem vor: Die if-Anweisung kann mit useAsyncData nicht auf die const-Variable zugreifen? </p>
<p>Irgendwelche Ideen? Die offizielle Dokumentation hat mir eine ähnliche Empfehlung gegeben: https://v3.nuxtjs.org/getting-started/error-handling/#example-1</p>
棱镜论坛中的有人帮助我找到了解决方案。这是 Vue 3 特定的问题:
您需要在 werk 之后使用 .value:
(!werk.value)
。而不仅仅是(werk.anything)