在封装request的那一章,就用到了深度结构。目前理解的不是很深,通过几个项目的跟进,
- 我觉得通过深度结构,可以更直观地表示数据的层级关系,使代码更加易于理解。见的多的就是在函数中使用深度解构,开发者可以通过深度封装提高接口的安全性,
- 通过深度解构有效地提取嵌套对象或数组的值,能够更高效地处理复杂数据结构,从而提升代码的质量和维护性。
在前面封装request中就用到了深度解构
export function request(flig = {}){ //解构
let {
url,
method = ‘GET’, //这里可以更换post啥的请求方式
data = {},
headers = {}
} = flig;
这个就是函数中使用深度解构,使用request函数传入值,然后就从flig中解构数据,这里的函数解构就像是先压缩后解压,当你传入的对象属性名与函数内部解构的变量名相同时,可以直接使用变量名,而无需显式地进行重命名
写一个解构例子
const person = {
name: ‘Bob’,
contact: {
email: ‘bob@example.com’
}
};
// 深度解构并设置默认值
const {
name,
contact: { email, phone = ‘N/A’ }//这里phone设置默认值,也可以重新命名,也可以说是小名
} = person;
console.log(name); // 输出: Bob
console.log(email); // 输出: bob@example.com
console.log(phone); // 输出: N/A
那就用前面用过的一个
const fetchData=async()=> {
try {
const res = await narv();
console.log(res.data);
const id = res.data[0].id; // 直接获取 id
const listId = await narvList(id);
console.log(listId.data);
const commentId = listId.data[0].id; // 直接获取评论 id
const comments = await getComment(commentId);
console.log(comments.data);
} catch (err) {
console.log(err);
}
}
这里是上一篇链式调用,就拿第一个narv()说说吧,由于这里的data中有多条数据,每条数据中都有一个id,不适用解构,解构起来有点麻烦,看图理解
const res = await narv();
let {data} = res;
const [firstId,…otherId] = data; //这里的…是展开的意思
let id = firstId.id;//展开之后将第一条数据給firstId 所以后面要加.id
//……. 如果要其他id …….
//const otherIds = otherId.map(({id})=>id);//提取其他id 返回的是一个数组
//如果要其他id的第一个就打印otherIds[0]
//…………
最后说说let 和 const ,let定义的可以改变而const不可以,
- 在编写代码时,推荐优先使用 const 来声明变量,只有在确实需要重新赋值时再使用 let,
- 使用 const 定义的变量确实不能被重新赋值,但这并不意味着它们的内容不能更改。这一点在处理对象和数组时尤为重要。
const count = 10; // count = 20; // 报错: Assignment to constant variable.
const count = ref(0); // 使用 ref 创建响应式变量
count.value++; // 可以修改响应式数据 console.log(count.value); // 输出: 1
const user = { name: ‘小明’, age: 18 }; user.name = ‘小红’; // 可以修改属性
console.log(user.name); // 输出: 小红
//但如果你使用const时创建响应式变量,查看内容时要加一个 .value
const user = ref({ name: ‘小明’, age: 18 }); // 创建一个响应式对象
user.value.name = ‘小红’; // 修改对象的属性
console.log(user.value.name); // 输出: 小红
上面的对比,创建响应式变量
- 是一个响应式引用,由 ref 创建。
- 通过 user.value 访问和修改其属性。
- 修改属性会自动触发 Vue 的视图更新,确保 UI 与数据保持同步。
Comments 1 条评论
博主 2801429414@qq.com
牛哇,博客建议增加代码高亮功能(如支持highlight)提升阅读观感