Деструктуризация Javascript: назначение значений по умолчанию с динамическими свойствами - PullRequest
0 голосов
/ 07 октября 2019

Я работаю с apollo хуком useQuery и ищу более краткий способ написать следующее утверждение, когда data равно undefined (или, если это даже достижимо).

// hook example
// const {data: {foo=[]}, loading} = useQuery(Q);
const {data:{foo}, loading} = {data: {foo: [1, 2, 3, 4]}, loading: false};
console.log(foo, loading);

, когда данные undefined:

// hook example
// const {data:{}, loading} = useQuery(Q);
// const {foo} = data;
const {data={}, loading} = {data: undefined, loading: true};
const {foo=[]} = data;
console.log(foo, loading);

Спасибо за помощь,

1 Ответ

3 голосов
/ 07 октября 2019

Вы рядом. Просто объедините назначения по умолчанию из второго фрагмента. Это присвоит data пустому литералу объекта, если он не определен. Если data не имеет свойства foo, ему присваивается литерал пустого массива foo

const { data: { foo = [] } = {}, loading} = { data: undefined, loading: true };
console.log(foo, loading);
...