在封装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不可以,

  1. 在编写代码时,推荐优先使用 const 来声明变量,只有在确实需要重新赋值时再使用 let,
  2. 使用 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 与数据保持同步。
咸鱼还是鱼
最后更新于 2024-09-28