[英]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.