Можно ли упростить это назначение путем деструктуризации? - PullRequest
4 голосов
/ 21 июня 2019

Я все еще пытаюсь изучить весь путь к деструкции. Я знаю достаточно, чтобы знать, что может быть способ написать это более кратко. Есть ли?

      this.props.setStateObjects({
        data:     data.reservation_data.data,
        included: data.reservation_data.included
      })

Редактировать:

Согласно запросу @Sung M Kim ниже, это контекст:

    $.ajax({
    })
    .done( ( data ) => {
      this.props.setStateObjects({
        data:     data.reservation_data.data,
        included: data.reservation_data.included
      })
    })

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Вы можете применить деструктуризацию к data, чтобы убрать reservation_data, а затем вычеркнуть поля data и included из reservation_data. Затем вы можете установить их в состояние с помощью сокращенной записи значения ключа объекта, например,

const { reservation_data: { data: dataToSet, included } } = data

или менее деструктурированный

const { data: dataToSet, included } = data

затем установите его в состояние

this.props.setStateObjects({
  data: dataToSet,
  included
})
1 голос
/ 21 июня 2019

Использование оператора распространения: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax

let pickedParameters = (({ data, included }) => ({ data, included }))(data.reservation_data);

this.props.setStateObjects({...pickedParameters});

В качестве альтернативы для получения данных и их включения вы можете использовать этот формат, чтобы избежать этой функции, хотя по-прежнему повторяется и выглядит некрасиво:

let pickedParams = {};
({data: pickedParams.data, included: pickedParams.included} = data.reservation_data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...