React ES6 解构

解构

为了演示解构,我们将制作一个三明治。你会把冰箱里的东西都拿出来做三明治吗?不,你只拿你想在三明治上用的东西。

解构是完全相同的。我们可能有一个正在使用的数组或对象,但我们只需要其中包含的一些项。

解构使得只提取所需内容变得容易。


解构数组

下面是将数组项分配给变量的旧方法:

之前:
  1. const vehicles = ['mustang', 'f-150', 'expedition'];
  2. // old way
  3. const car = vehicles[0];
  4. const truck = vehicles[1];
  5. const suv = vehicles[2];

Here is the new way of assigning array items to a variable:

使用解构:
  1. const vehicles = ['mustang', 'f-150', 'expedition'];
  2. const [car, truck, suv] = vehicles;
在分解数组时,变量的声明顺序很重要。

如果我们只想要汽车和 suv,我们可以省去卡车,但保留逗号:

  1. const vehicles = ['mustang', 'f-150', 'expedition'];
  2. const [car,, suv] = vehicles;

当函数返回一个数组时,解构就很方便了:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <script>
  5. function calculate(a, b) {
  6. const add = a + b;
  7. const subtract = a - b;
  8. const multiply = a * b;
  9. const divide = a / b;
  10. return [add, subtract, multiply, divide];
  11. }
  12. const [add, subtract, multiply, divide] = calculate(4, 7);
  13. document.write("<p>Sum: " + add + "</p>");
  14. document.write("<p>Difference " + subtract + "</p>");
  15. document.write("<p>Product: " + multiply + "</p>");
  16. document.write("<p>Quotient " + divide + "</p>");
  17. </script>
  18. </body>
  19. </html>

解构 对象

下面是在函数中使用对象的旧方法:

之前:
  1. const vehicleOne = {
  2. brand: 'Ford',
  3. model: 'Mustang',
  4. type: 'car',
  5. year: 2021,
  6. color: 'red'
  7. }
  8. myVehicle(vehicleOne);
  9. // old way
  10. function myVehicle(vehicle) {
  11. const message = 'My ' + vehicle.type + ' is a ' + vehicle.color + ' ' + vehicle.brand + ' ' + vehicle.model + '.';
  12. }

下面是在函数中使用对象的新方法:

使用解构:
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p id="demo"></p>
  5. <script>
  6. const vehicleOne = {
  7. brand: 'Ford',
  8. model: 'Mustang',
  9. type: 'car',
  10. year: 2021,
  11. color: 'red'
  12. }
  13. myVehicle(vehicleOne);
  14. function myVehicle({type, color, brand, model}) {
  15. const message = 'My ' + type + ' is a ' + color + ' ' + brand + ' ' + model + '.';
  16. document.getElementById("demo").innerHTML = message;
  17. }
  18. </script>
  19. </body>
  20. </html>
请注意,对象属性不必按特定顺序声明。

我们甚至可以通过引用嵌套对象,然后使用冒号和大括号再次分解嵌套对象中所需的项,来分解深度嵌套对象:

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <p id="demo"></p>
  5. <script>
  6. const vehicleOne = {
  7. brand: 'Ford',
  8. model: 'Mustang',
  9. type: 'car',
  10. year: 2021,
  11. color: 'red',
  12. registration: {
  13. city: 'Houston',
  14. state: 'Texas',
  15. country: 'USA'
  16. }
  17. }
  18. myVehicle(vehicleOne)
  19. function myVehicle({ model, registration: { state } }) {
  20. const message = 'My ' + model + ' is registered in ' + state + '.';
  21. document.getElementById("demo").innerHTML = message;
  22. }
  23. </script>
  24. </body>
  25. </html>

分类导航