Javascript ES6将结构分解为“this”

Javascript ES6将结构分解为“this”,javascript,reactjs,ecmascript-6,destructuring,Javascript,Reactjs,Ecmascript 6,Destructuring,正在尝试ES6解构 我在React类构造函数中使用以下代码: let { class, ...rest } = props; 上述代码有效。但是我需要这个.class和这个.rest中的变量 我有这个代码,它可以工作: let { classes, ...rest } = props; this.classes = classes; this.rest = rest; 我在找这样的东西: { this.classes, ...this.rest } = props; 实现的一个更

正在尝试ES6解构

我在React类构造函数中使用以下代码:

let { class, ...rest } = props;
上述代码有效。但是我需要这个.class和这个.rest中的变量

我有这个代码,它可以工作:

let { classes, ...rest } = props; 
this.classes = classes; 
this.rest = rest; 
我在找这样的东西:

{ this.classes, ...this.rest } = props;  

实现的一个更为棘手的方法是使用一个绑定了所需函数的函数

这里重命名是关键,这里发生的是从道具中提取值,并将其分配给我们重命名的对象

({ classes:this.classes,...this.rest } = props)
所以这实际上和

this.classes = props.classes;
this.rest = all the properties expect those which are already destrucutred
您可以将代码粘贴到此处并查看简化版

常量道具={ 课程:“一些课程”, a:‘a’, b:‘b’ } 让我们试试他的={} 洛根提斯 让getMeValuesOnThis=functionprops{ {classes:this.classes,…this.rest}=props }宾德先生 getMeValuesOnThisprops console.log'--函数执行后的值--'
console.logtesthis您可以使用重命名属性,但不幸的是,这涉及到一些重复:

({ classes: this.classes, ...this.rest } = props);
类是我们从道具中获得的属性的名称;this.classes是分配给它的变量的名称。使用this.rest,我们显然不需要命名原始属性名

演示:

功能Fooprops{ {classes:this.classes,…this.rest}=props; } 常量道具={ 课程:“一些课程”, a:‘a’, b:‘b’ }
console.lognewfooprops;您使用的是函数组件还是类组件?还不太清楚您想要实现什么,因为我使用react-class Component想不出一种特别优雅的单行方式来实现它,但是您可以Object.assignthis、{classes,rest}或Object.assignthis、{rest:{…props},classes:props.classes}您的方式和@rayhatfield建议的方式都是正确的。然而,我觉得可能没有必要将道具复制到类变量中,因为您可以从需要的道具中访问它们。请记住,可读、易于理解的代码比保存几个键入字符更重要。首先要弄清楚,你对bind的建议毫无意义。如果在您的示例中,这是窗口对象,那么输出是正确的,但不是由于绑定,您可以删除绑定并获得相同的输出。@t.niese您是对的,但同样可以完成,在任何可能与窗口对象不同的范围内,不是吗?我投了反对票,我已经说过绑定在这里没有任何意义。bindthis对变量类和rest的查找没有任何影响。在您的示例中,编写bind{}将导致完全相同的结果。bind只对该函数中的this有影响,但对其他变量的查找没有影响,函数中也没有使用this。@t.niese oh明白了,感谢您指出,我感谢您的评论,更新:Damm this甚至更干净+1Neat,但是我很矛盾的是,那些需要相当高级的理解才能理解的代码是否真的更好。@jfriend00:我可以看出你的观点,例如。。。习语索引;但这并不完全是代码高尔夫,它只是使用现代的ES解构语法。我不会称之为高级,就像使用Set或class一样。