使用TypeScriptReact-将Axios Get方法转换为泛型Axios Get方法

bkhjykvo  于 2023-05-22  发布在  iOS
关注(0)|答案(2)|浏览(143)

我正在尝试将我的axios Get方法变成一个generic method,这样我就可以在任何需要它的地方重用它。
我在如何使它工作上遇到了一点麻烦。我给你看些代码

axios.get(`${urlUser}?userName=${getUserName()}`)
            .then((response: AxiosResponse<userProfile>) => {
                setProfile(response.data);
            })

这是我试图转换为泛型方法的get方法。Url和状态函数setProfile可以作为参数传入,但userProfile模型需要是泛型的。

export const Get = <T>(url: string, setState: any, Response: T) => {
    axios.get(url)
            .then((response: AxiosResponse<T[]>) => {
                setState(response.data);
        })
}

下面是转换后的通用代码。但是,这不起作用,因为在AxiosResponse中,我需要为响应传递某种模型。
我尝试向函数中添加一个通用的Response参数,但是将Response添加到AxiosResponse<>中不起作用
我不认为我离得太远了,有什么办法解决这个问题吗?
多谢

wljmcqd8

wljmcqd81#

解决方案

export const Get = <T,>(url: string, setState: any) => {
    axios.get(url)
            .then((response: AxiosResponse<T[]>) => {
                setState(response.data);
        })
}

Get函数,其中调用

Get<userProfile>(`${urlUser}?userName=${getUserName()}`)
uelo1irk

uelo1irk2#

你可以像这样使用泛型:

const { data: users } = await this.axios.get<User[]>('/users');

console.log(users);

相关问题