试着破坏ES6。
我在React类构造函数中使用这段代码:
let { class, ...rest } = props;
以上代码起作用。但我需要this.class
和this.rest
中的变量。
我有这个代码,它能工作:
let { classes, ...rest } = props;
this.classes = classes;
this.rest = rest;
我在找这样的东西:
{ this.classes, ...this.rest } = props;
发布于 2019-09-19 05:08:43
您可以使用重命名属性,但不幸的是,它涉及到一些重复:
({ classes: this.classes, ...this.rest } = props);
classes
是我们从props
获得的属性的名称;this.classes
是它被分配给的变量的名称。使用this.rest
,我们显然不需要命名原始的属性名。
演示:
function Foo(props) {
({ classes: this.classes, ...this.rest } = props);
}
const props = {
classes: 'some clases',
a: 'A',
b: 'B'
}
console.log(new Foo(props));
发布于 2019-09-19 04:52:25
一个更复杂的实现方法是使用与所需的this
绑定的函数。
在这里,重命名是关键,这里发生的是从props
中选择值并将其赋值给任何我们重命名的
({ classes:this.classes,...this.rest } = props)
所以这实际上和
this.classes = props.classes;
this.rest = all the properties expect those which are already destrucutred
您可以在这里粘贴代码,并查看简化版本Babel
。
const props = {
classes: 'some clases',
a: 'A',
b: 'B'
}
let tempThis = {}
console.log(tempThis)
let getMeValuesOnThis = function(props) {
({ classes:this.classes,...this.rest } = props)
}.bind(tempThis)
getMeValuesOnThis(props)
console.log('---values after function execution---')
console.log(tempThis)
ray
已经在注释中建议了一种使用Object.assign
来实现这一点的方法。
https://stackoverflow.com/questions/58003656
复制相似问题