Деконструкция реквизита при добавлении реквизита к нему. - Является ли это возможным? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть некоторые реквизиты, как это.

const {
  header,
  footer,
  name,
  body,
  title,
} = this.props;

Все прекрасно работает, но есть ли способ назначить имя для тела в приведенном выше синтаксисе, не назначая его позже.

Нечто подобное.

const {
  header,
  footer,
  name,
  body: {...name},
  title,
} = this.props;

Помните Я хочу сохранить то, что в теле, но добавить к нему слизня.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Предполагая

const this = {
    props: {
        header: 'header',
        footer: 'footer',
        name: 'name',
        body: 'body',
        title: 'title',
    }
};

Я думаю, это то, чего вы хотите достичь ....

const {
    header,
    footer,
    name,
    body,
    title,
} = {
  ...this.props,
  body: this.props.name,
  //if body is an object, and name is an object, and you want to merge the two you can do:
  /** 
   * body: { ...this.props.body, ...this.props.name }
   */
};

console.log(body); //"name"

но, кажется, гораздо проще

const {
    header,
    footer,
    name,
    title,
} = this.props;

const body = this.props.name; 
// or if you are merging
/**
 * const body = { ...this.props.body, ...name };
 */

Но что касается образца, вы не можете ссылаться на ключ в объекте, пока он определен (или деконструирован).

const {
  header,
  footer,
  name,
  body: {...name}, //name is not available here, but this.props.name is
  //also `body: {...name}` is the same as `body: name`
  title,
} = this.props;
0 голосов
/ 31 августа 2018

Чтобы присвоить body пользовательское имя:

const {
  header,
  footer,
  name,
  body: customName,
  title,
} = this.props;

console.log(customName);

Чтобы объединить реквизиты body и name в один body const:

const this.props = {
  name: { name1: 1, name2: 2 },
  body: { body1: 3, body2: 4 }
};

const {
  header,
  footer,
  name,
  body,
  title,
} = {
  ...this.props,
  body: { ...this.props.body, ...this.props.name }
};

console.log(body);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...