Ecmascript всегда добавляет новые функции, которые делают наш код более мощным. Я даже начал дискуссию о любимых людей.
Какое ваше любимое дополнение к ES2015+
Лори ・ 11 июня ’19 ・ 1 мин читать
Там я перечислил, что моя была уничтожением задания. Вы можете прочитать больше об этом в Мозилла документы Анкет
Итак, без лишних слов, вот несколько замечательных примеров этого синтаксиса в действии!
Допустим, у нас есть объект, которого мы хотим манипулировать, который выглядит так:
{ data: { item: "this thing" } }
Если мы передаем его в функцию и доступ вещь
Это немного грязно.
(result) => { result.data.item }
С заданием Destructuring мы можем изменить это на это!
({data}) => { data.item }
Импорт и экспорт модулей довольно много использует эту концепцию.
Экспорт, импорт и дефолт, о боже!
Лори ・ 29 апреля ’19 ・ 3 мин Читает
Что, если бы вместо этого у нас был массив.
[ { item: "this thing" }, { num: 200 } ]
Доступ к нему без разрушения назначения не идеально.
(result) => { result[0].item }
Но посмотрите, насколько мощный ES2015+!
([data, status]) => { data.item }
Я наткнулся на удивительный вариант использования для назначения разрушения при использовании Обещание. Все
другой день. Если ты не знаком, Обещание. Все
разрешает несколько обещаний и ставит результаты в массив. Что-то типа
[result1, result2]
Теперь подумайте о типичном ответе на обещание (особенно если это HTTP -запрос) оба результата, вероятно, похожи на это.
{ data: { item: "this thing" } }
Мы можем объединить оба наших предыдущих примера и сделать это намного чище, чтобы получить доступ к контенту внутри каждого объекта ответа.
Promise.all([ promise1, promise2, ]).then(([{ data: result1 }, { data: result2 }]) => { result1.item });
Теперь здесь происходит ряд вещей.
- Мы используем деструктуризация массива для доступа к каждому элементу в массиве индивидуально.
- Затем мы используем разрушение объекта на этих записях массива.
Но есть поворот. Что это?
{data: result1}
Это присваивает имя переменной объекту данных. Мы не хотим использовать данные
Потому что мы также получаем доступ к чему -то под названием данные
в Результат2
Анкет Обратите внимание, что объект, к которому мы обращаемся, идет первым, и имя идет вторым. Следующее не сработает.
Promise.all([ promise1, promise2, ]).then(([{ result1: data }, { result2: data }]) => { result1.item });
У вас должны быть уникальные имена переменных (понятно). И в этом примере данные
используется дважды.
Но там у вас есть. Посмотрите, насколько чище наш код может быть с заданием Destructuring!
Оригинал: “https://dev.to/laurieontech/3-powerful-examples-of-destructuring-assignment-jlf”