簡體   English   中英

ES6動態解構

[英]ES6 dynamic destructuring

我需要根據全局標志對函數響應應用不同的解構[多個應用程序的單個服務]

// Destructuring template should be defined as value
let destructuringTemplate;
if (flag) {
   destructuringTemplate = {data: {classA: user}};
} else {
   destructuringTemplate = {data: {classB: user}};
}
// This technique would not work, this is just my idea representation.
this.getUser(({destructuringTemplate: user) => { this.localUser = user });

目前,它是這樣工作的:

let destructuringTemplate;
if (flag) {
   destructuringTemplate = ({data: {classA: user}}) => user;
} else {
   destructuringTemplate = ({data: {classB: user}}) => user;
}
this.getUser(response => { this.localUser = destructuringTemplate(response)};

這有點丑陋,有些建議應該怎么做?

您可以將計算的屬性名稱條件(三元)運算符?:

 var flag = true, object = { data: { classA: 'foo', classB: 'bar' } }, { data: { [flag ? 'classA' : 'classB']: user } } = object, { data: { [!flag ? 'classA' : 'classB']: user1 } } = object; console.log(user); console.log(user1); 

您不需要使用解構,只需使用簡單的點/括號表示法即可:

const userClass = flag ? 'classA' : 'classB'
this.getUser(response => { this.localUser = response.data[userClass] })

如果要重用此邏輯,只需創建簡單的函數,例如:

const extractUser = response => response.data[userClass]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM