javascript 将对象解构为 'this'
javascript destructure object to 'this'
我想将 response.data 的分页结果分配给 Vue 数据
所以显而易见的方法就是
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 }
注意:以上代码无效。
不适用于 this
- this
无法重新分配。
如果 data
对象包含 只有 那些属性,并且您将 response.data
的 per_page
属性 更改为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 });
所以根据@CertainPerformance 的回答并研究如何从 How to get a subset of a javascript object's properties
中检索对象的子集属性
我得到了一个对象解构的有效解决方案。
const page = (({ data, total, per_page: perPage }) => ({ data, total, perPage }))(response.data)
Object.assign(this, page)
但是代码并没有缩短或更易于阅读,所以我回到显而易见的方式。
我想将 response.data 的分页结果分配给 Vue 数据
所以显而易见的方法就是
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 }
注意:以上代码无效。
不适用于 this
- this
无法重新分配。
如果 data
对象包含 只有 那些属性,并且您将 response.data
的 per_page
属性 更改为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 });
所以根据@CertainPerformance 的回答并研究如何从 How to get a subset of a javascript object's properties
中检索对象的子集属性我得到了一个对象解构的有效解决方案。
const page = (({ data, total, per_page: perPage }) => ({ data, total, perPage }))(response.data)
Object.assign(this, page)
但是代码并没有缩短或更易于阅读,所以我回到显而易见的方式。