可以通过解构来简化此分配吗?

时间:2019-06-21 00:20:16

标签: reactjs ecmascript-6

我仍在尝试学习各种方法。我知道足够多,可能有一种更简洁地编写此方法的方法。有吗?

      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 个答案:

答案 0 :(得分:2)

您可以对data进行解构以拔出reservation_data,然后从data拔出includedreservation_data字段。然后,您可以使用速记对象键值表示法将其设置为状态,

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

或更少破坏

const { data: dataToSet, included } = data

然后将其设置为状态

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

答案 1 :(得分:1)

使用传播运算符: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);