【问题标题】:How to mutate with SWR only for specific ID?如何仅针对特定 ID 使用 SWR 进行变异?
【发布时间】:2021-11-02 16:57:03
【问题描述】:

我尝试在网上到处寻找,但似乎找不到任何关于此的文档,这很奇怪,因为我认为这将是一种流行的需求。

例如,如果我们尝试获取具有特定 id 的帖子:

const { data } = useSWR(`/api/post/${id}`, fetcher)

当我们进行变异时,也许我们有一个编辑帖子的表单:

mutate(`/api/post/${id}`)

要强制对特定 ID 进行重新验证,不会发生任何事情。在这种情况下,正确的做法是什么?

顺便提一下,在没有 id 的情况下进行 SWR 获取,例如 /api/cmets,其中所有的 cmets 都被获取,然后 mutate 在执行 mutate('/api/comments') 时重新验证没有问题

希望这是有道理的。我基本上想要实现的是,在使用一些 id 更新帖子后做一个 POST 请求,然后我想用更新的数据重新渲染页面。

当 id 值为动态时,我的印象是 mutate 无法识别键

【问题讨论】:

    标签: typescript axios next.js swr


    【解决方案1】:

    只需从钩子中导入 mutate 函数,它与那个键绑定。

    const { data, mutate } = useSWR(`/api/post/${id}`, fetcher)
    

    然后只需调用 mutate()

    【讨论】:

    • 我刚刚尝试过,但它似乎不起作用。我看到了重新渲染,但它似乎仍然缓存了旧值。
    • 你能在更新帖子的地方添加代码吗,这是我从 btw swr.vercel.app/docs/mutation#bound-mutate获取代码的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多