next.js swr Я не хочу выполнять его только во время первоначального рисования

Среда разработки
・ next.js
・ typescript
・ swr

он использует swr для связи с swr.
Я хочу запускать его только при изменении значения запроса.
но также выполняется во время первоначального рисования.
что я могу сделать, чтобы предотвратить его запуск во время первоначального рисования?

export const useUserQuery = (query: string) => {
  const fetcher = (url) => {
    Axios.get(url).then((res) => {
      return res;
    });
    const path = `users/?query=${query}`;
    const { data, error } = useSWR<IUser>(path);
    return {
      data: data,
      loading: !error && !data,
      Error: error,
    };
  };
};

2 ответа

ОБНОВЛЕНО:

использовать initalData и отключить revalidateOnMount тогда он должен работать так, как вы ожидаете.

подробнее см. в документации: https://github.com/vercel/swr

Похоже, что ты перепоявился на изменение переменной. Если вы попробуете это, это не сработает, потому что даже если tokenизменения, SWR по-прежнему будет использовать тот же ключ и возвращать неправильные данные.

      useSWR('/api/user', url => fetchWithToken(url, token))

Вместо этого вы можете использовать массив в качестве keyпараметр, который содержит несколько аргументов fetcher:

      const { data: user } = useSWR(['/api/user', token], fetchWithToken)

Подробнее см. в документах

Другие вопросы по тегам