javascript деструктурировать объект до 'этого' - PullRequest
1 голос
/ 23 марта 2020

Я хотел бы присвоить результат разбивки на страницы из response.data на Vue data
, поэтому очевидным способом является просто

    this.data = response.data.data
    this.total = response.data.total
    this.perPage = response.data.per_page

Но есть ли способ ES6 назначить результат напрямую чему-либо как это?

    const page = { data, total, per_page : perPage } = response.data
    this = { ...this, ...page }

Примечание: приведенный выше код не работает.

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Не с this - this нельзя переназначить.

Если объект data содержит только этих свойств, и вы изменили свойство per_page для от response.data до perPage, тогда вы можете использовать Object.assign:

Object.assign(this, response.data);

Если объект data содержит другие свойства или вы не можете переименовать per_page, тогда:

const { data, total, per_page : perPage } = response.data
Object.assign(this, { data, total, perPage });
0 голосов
/ 23 марта 2020

Итак, из ответа @ CertainPerformance и выяснения, как извлечь подмножество свойств объекта из Как получить подмножество javascript свойств объекта

Я получил рабочее решение с деструктуризация объекта.

    const page = (({ data, total, per_page: perPage }) => ({ data, total, perPage }))(response.data)
    Object.assign(this, page)

Однако код не укорочен и не легче для чтения, поэтому я go вернусь к очевидному пути.

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