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)
Подробнее см. в документах