gpt4 book ai didi

reactjs - axios嵌套请求函数返回

转载 作者:行者123 更新时间:2023-12-05 08:52:39 24 4
gpt4 key购买 nike

我正在尝试从 API 获取图像数据,并且。为此,我首先需要获取它的 ID,然后使用它来获取图像。为了保持干净的代码,我正在使用一个函数来执行此操作,当我尝试将响应返回到我调用该函数的组件时遇到了问题。

getNextImageData

export const getNextImageData = () => {
const apiToken = lscache.get('apiToken')
return(
axios({
method: 'get',
url: 'https://myapiurl/images/',
params: {
limit: '1',
doc_cat: ''
},
responseType: 'json'
})
.then(response => {
lscache.set('imageData', response, 30)
axios({
method: 'get',
url: 'https://myapiurl/images/' + response.data[0].id + '/',
})
.then(response => {
return(response.data)
})
})
)
}

我的类(class)

class MyClass extends Component {
constructor(props){
super(props);
this.state = {
image: undefined
}
}
async componentDidMount() {
const data = await getNextImageData()
this.setState({
image: data,
})
}
render() {
// something
}
}

我没有从返回中收到任何东西,当我将代码直接粘贴到我的组件时,它工作正常,但我想在一个函数中使用它

最佳答案

我错误地嵌套了它,您没有在另一个 then 中使用 then,而是在同一级别上使用它们。每个 axios 调用都遵循一个 return 语句。这样做我什至不需要使用 async/await,我使用了另一个 promise

getNextImageData

export const getNextImageData = () => {
const apiToken = lscache.get('apiToken')
return axios({
method: 'get',
url: 'https://myapiurl/images/',
params: {
limit: '1',
doc_cat: ''
},
responseType: 'json'
})
.then(response => {
lscache.set('imageData', response, 30)
return axios({
method: 'get',
url: 'https://myapiurl/images/' + response.data[0].id + '/',
})
})
.then(response => {
return response.data
})
}

我的类(class)

class MyClass extends Component {
constructor(props){
super(props);
this.state = {
image: undefined
}
}
componentDidMount() {
getNextImageData()
.then(data => {
this.setState({
image: data,
})
})
}
render() {
// something
}
}

关于reactjs - axios嵌套请求函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55925415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com