我正在尝试为我的数据获取实现 swr 库。我曾经使用普通的 axios 和我创建的一些自定义钩子。我遇到的问题是,出于某种原因,swr 在设置默认 axios 标头之前触发了 get 请求,因此在发送标识我的应用程序帐户所需的标头时丢失了。我的猜测是它与 SWR 的预取功能有关,但这只是一个疯狂的猜测,不知道如何防止这种情况发生。
import axios from "axios";
import React, {useLayoutEffect} from "react";
import useSWR from "swr";
function Child({match}) {
const fetcher = () => {
console.log('Should happen second')
axios.get('https://api.mydomain.com').then(res => res.data)
}
const {data} = useSWR('/account/specific/data', fetcher)
return <div>{JSON.stringify(data)}</div>
}
export default function Account({match}) {
let accountId = match.params.accountId;
useLayoutEffect(() => {
console.log('Should happen first')
axios.defaults.headers.common["Account-Token"] = accountId;
}, [accountId]);
return <Child/>
}