Javascript 解构:使用动态属性分配默认值

Javascript destructuring: Assigning defaults with dynamic properties

我正在使用 apollouseQuery 钩子,我正在寻找一种更简洁的方法来编写以下语句,当 dataundefined(或如果这甚至可以实现的话)。

// 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);

感谢您的帮助,

你很接近。只需组合第二个代码段中的默认分配。如果未定义,这会将 data 分配给空对象文字。如果 data 没有 foo 属性,它将分配一个空数组文字给 foo

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