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”