我正在使用Relay编写javascript,我发现了以下声明:
const { connectionType: UsersConnectionType } = connectionDefinitions( { nodeType: UserType });
{ connectionType: CustomerConnectionType }
究竟是什么意思?如何在以后引用该变量以及如果我有两个以上的变量如何导出它,例如:
const { connectionType: CustomerConnectionType } = connectionDefinitions( { nodeType: CustomerType });
const { connectionType: ItemConnectionType } = connectionDefinitions( { nodeType: ItemType });
答案 0 :(得分:1)
我想我刚刚发现它 - 它是Destructuring assignment。还有其他形式的数组,等等。这是ECMAScript的第6件事。
可以从对象解压缩属性,并将其分配给名称与对象属性不同的变量。
var o = {p: 42, q: true};
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
坦率地说,我认为语法令人困惑 - 我会使用var { foo: p, bar: q}
代替(或完全不同的语法,所以它看起来并不像对象初始化那样容易混淆),但我想他们有他们的理由
在你的情况下,行
const { connectionType: UsersConnectionType } = connectionDefinitions({nodeType:UserType});
实际上相当于
const UsersConnectionType = connectionDefinitions({nodeType:UserType}).connectionType;
只是有更多的金光闪闪和困惑。 :)
答案 1 :(得分:0)
这是一种初始化UsersConnectionType的方法,看看示例
function A(){
return {x : 5};
}
let {x : y} = A();
console.log(y);

如果你知道函数的返回值是什么,你可以用这种方式初始化它们。
{x : y}
这里y被赋予从函数A()
返回的x的值