如何使用axios修复nextjs中的缓存问题

7kjnsjlb  于 2023-11-18  发布在  iOS
关注(0)|答案(1)|浏览(234)

我试图使用nextjs服务器端获取我的类别数据并将其设置在输入中,以便用户可以看到当前的类别数据,并能够编辑和输入新值。然而,当用户编辑类别时,他通过推送重定向到显示所有类别的页面,当他单击菜单时,他使用推送重定向到编辑路由,在服务器端,在编辑路由中获取类别并按照我之前所说的做,但第一次它工作。在第二个中,它在30秒后工作,我相信这可能是缓存。我在文档中看到他们默认使用fetch,它具有禁用该高速缓存的功能,但我之前测试过它并不成功,但我想继续使用axios,因为它有一个拦截器功能,使它更容易。
科迪哥:

import { Api } from "@/utils";
import { EditCategoryLayout } from "./@root";
import { notFound } from "next/navigation";

type PageProps = {
    params: {
        categoryId: string
    },
    searchParams: {}
}

const getData = async (categoryId: string) => {
    return await Api.get('/store/category', {
        params: {
            categoryId
        }
    });
}

export default async function DashboardEditCategory(props: PageProps) {
    const { categoryId } = props.params;

    const req = await getData(categoryId);

    if (req.status !== 200 || req.data.error) notFound();

    return (
        <EditCategoryLayout id={categoryId} {...req.data as any} />
    )
}

字符串
缓存nextjs的问题

7gcisfzg

7gcisfzg1#

默认情况下,NextJs总是缓存GET方法。如果你想选择退出缓存,你的API路由需要使用以下之一:
1.通过GET方法使用Request对象。阅读更多选择退出缓存
1.通过使用Route Segment Config选择退出缓存整个路由

相关问题