代码try块中`const { data: { data } }`里的`data:`是什么及作用?
问题解答
首先得明确axios请求返回的结构:当你用axios发起请求并成功拿到响应时,返回的是一个axios封装的响应对象,它的结构大概是这样的:
{ data: { // 这是axios帮你解析后的API完整响应体 data: [/* 这里才是Travel Advisor API返回的餐厅/地点数据 */], // API还可能返回其他字段比如status、message等 }, status: 200, // HTTP状态码,axios自带的属性 headers: {...}, // 响应头,axios自带的属性 // 其他axios封装的属性 }
接下来看你疑惑的const { data: { data } }:
- 这是JavaScript嵌套对象解构的语法,冒号
:在这里的作用是:先从axios响应对象中提取名为data的属性(也就是API的完整响应体),然后再从这个提取出来的响应体里,继续提取它内部的data字段,最后把这个内部data的值直接赋值给当前作用域的data变量。 - 换句话说,这行代码等价于:
const response = await axios.get(...); const data = response.data.data;
使用这种写法的目的很简单:跳过中间的response.data层级,直接拿到你真正需要的业务数据,让代码更简洁,不用写冗长的链式访问。
内容的提问来源于stack exchange,提问作者hacksrinja
相关产品推荐
相关产品推荐

