React SWR - 如何知道更新(变异)正在运行?

und*_*ood 11 javascript reactjs swr

我主要使用 SWR 来获取数据,但是我遇到了需要更新数据的情况。问题是,我需要一个指示该请求正在进行的指示器,例如isLoading标志。在文档中有一个使用建议

const isLoading = !data && !error;
Run Code Online (Sandbox Code Playgroud)

但当然,当更新(变异)时,data仍然存在,因此该标志始终为false。与标志相同isValidating

const { isValidating } = useSWR(...);
Run Code Online (Sandbox Code Playgroud)

当突变正在进行时,此标志不会更改,但仅当其完成且GET请求开始时才更改。

问题

有没有办法知道我的是否PUT正在加载?注意:我不想使用状态中的任何字段,因为它不会像 SWR 数据一样被共享。也许我的 SWR 代码有问题?

const fetcher = (url, payload) => axios.post(url, payload).then((res) => res); 
  // ^^^^^ its POST but it only fetches data

const updater = (url, payload) => axios.put(url, payload).then((res) => res);
  // ^^^^^ this one UPDATES the data

const useHook = () => {
  const { data, error, mutate, isValidating } = useSWR([getURL, payload], fetcher);

  const { mutate: update } = useSWRConfig();

  const updateData = () => {
    update(getURL, updater(putURL, payload)); // update data
    mutate(); // refetch data after update
  };

  return { 
    data,
    updateData,
    isValidating,               // true only when fetching data
    isLoading: !data && !error, // true only when fetching data
  } 
Run Code Online (Sandbox Code Playgroud)

编辑:对于任何其他阅读本文并面临相同问题的人...没有找到任何解决方案,因此切换到react-query. 再见驻波比

小智 -3

嗯基于此: https: //swr.vercel.app/docs/conditional-fetching

updater当您的is 评估为“falsy”值时,“正在加载”状态应该有效。

余!我不知道 React swr 只是查看了文档 - 在周末结束时花费了很多时间:D

至少我希望我能开始讨论:D