熟悉Javascript解构
当我学习 Javascript 的基础知识时,我发现课堂上的许多人对解构并没有很好的理解。这是 ES6 中看似容易掌握的特性之一——但是当我开始学习带钩子的 React 时,我对这个概念的摇摇欲坠的知识又回来了,我们不得不像许多烫手山芋一样传递道具。
无论你是否了解 React,解构都值得花几分钟时间来思考一下。它可以使我们的代码更简洁——只是不要被语法混淆。
什么是解构?
解构是一种从数组中"解包"值或从对象中"解包"属性,并将它们分配给变量的方法。这并不意味着什么,所以让我们看看它是如何工作的。
它是如何工作的?
简而言之:在等号的左侧,我们定义了要从右侧的数组或对象中解包的变量。
数组
对于数组,变量根据它们在数组中的位置进行分配。const arr = [1, 2, 3];let [first, second, third] = arr; console.log(first); // 1 console.log(second); // 2
如果数组中的项目比声明的变量多,则不会分配前者。 const arr = [1, 2, 3, 4];let [first] = arr; console.log(first) // 1;
您甚至可以跳过您不感兴趣的变量,如下所示: let [first, ,third] = arr; console.log(third) // 3
对象
对于对象,我们通过它们的键来识别我们想要的值。 我们还可以选择重命名变量。
对于对象和数组,我们还可以指定一个默认值,如果 unpacked 的值未定义,则将使用该默认值。 (注意,如果 unpacked 的值为 null 或空字符串 "" ,则不使用默认值!)
在下面的例子中,我们解构了 name 和 age 变量,分别重命名为 username 和 userAge。 我们还想指定 Anonymous 和 12 的默认值。
const arr = [1, 2, 3];// DO YOU PREFER THIS? let first = arr[0]; let second = arr[1]; let third = arr[2];// OR THIS? let [first, second, third] = arr;
您可能仍然不为所动,但如果我们需要在代码中重复引用某些对象属性,解构赋值将变得特别有用——例如,如果用户提交了新的注册表单并且我们需要对数据进行处理。
这是另一个例子。 如果我们想多次访问用户的兴趣,可能更容易将其解构一次,这样我们就不必每次都输入 user.bio.interests。
嵌套解构
在上面的示例中,您可能已经注意到我实际上正在访问一个嵌套属性(interestsinside bio)。
观察嵌套解构的语法如何反映原始对象的结构! 一旦我们意识到这一点,编写嵌套解构的代码就变得几乎很直观。
这是另一个例子,我在一个虚假的 Medium 帖子上解构了一些数据。 特别注意统计数据和标签的解构:
如果您仍然对语法感到困惑,请不要担心。举几个例子练习一下就明白了!同时,这是我对嵌套解构的看法:
要从对象中获取感兴趣的值,我们指定其键的级别,用花括号 {} 括起来。 (重命名是可选的。)要在数组中获取值,还没有键,所以我们必须在方括号 [] 内声明并分配一个新的变量名。
我希望这会有所帮助! (如果没有,就假装你没读过。)