gpt4 book ai didi

nuxt.js - 为什么 useFetch 不能处理客户端 nuxt3 中的页面更改?

转载 作者:行者123 更新时间:2023-12-02 18:05:34 27 4
gpt4 key购买 nike

我刚开始学习 nuxtjs(对 vue.js 有一些经验),我遇到了以下问题:

我有一个简单的 todo-[id].vue 页面。它应该从 API 获取待办事项并呈现在页面上:

<script setup>
import Section from '~~/components/UI/containers/section.vue';
import ButtonLink from '~~/components/UI/buttons/button-link.vue';

const route = useRoute()
const todoId = parseInt(route.params.id)
const { data: todo } = await useFetch(`https://jsonplaceholder.typicode.com/todos/${todoId}`)
</script>

<template>
<Section>
<div class="mt-4 flex space-x-4">
<ButtonLink :to="{name: 'todo-id', params: {id: todoId - 1}}" type="secondary" v-show="todoId !== 1">previous</ButtonLink>
<ButtonLink :to="{name: 'todo-id', params: {id: todoId + 1}}">next</ButtonLink>
</div>
<div class="mt-6">
<p class="text-lg" :class="[todo.completed ? 'text-green-600' : 'text-red-600']">{{ todo.title }} (#{{ todo.id }})</p>
</div>
</Section>
</template>

它在服务器端工作正常,但是当我点击 next 按钮时,它不会调用 API 来获取下一个项目,页面的 url 正在改变。我应该怎么做才能在客户端调用API?我记得它在 vue.js 中运行良好

最佳答案

useFetch 尝试为您缓存文档并在您加载下一页时重新使用缓存。为避免这种行为,您可以传递函数而不是字符串:

useFetch(() => `https://jsonplaceholder.typicode.com/todos/${todoId}`)

或提供您自己的 key :

useFetch(`https://jsonplaceholder.typicode.com/todos/${todoId}`, { key: `todo:${todoId}` })

文档:https://v3.nuxtjs.org/api/composables/use-fetch

关于nuxt.js - 为什么 useFetch 不能处理客户端 nuxt3 中的页面更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73358147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com