我具有以下功能。
returnStateElement = (...elements) => {
const copy = Object.assign({}, this.state);
return elements.reduce((obj, key) => ({ ...obj, [key]: copy[key] }), {});
};
工作:
f = () => {
const dataSender = this.returnStateElement('email', 'password');
let { email, password } = dataSender;
console.log(dataSender,email,password);
}
没有工作:
f2 = () => {
const { email, password } = dataSender = this.returnStateElement('email', 'password');
console.log(dataSender,email,password);
}
[有一种方法可以使赋值类型更紧凑,如f2(),但是可以。
您可以执行以下操作,它将按照您想要的方式对其进行解构。但是您必须确保定义了dataSender!
let { dataSender: {email, password} } = this.returnStateElement('email', 'password');
以下内容应该起作用,您不必将结果分配给中间变量,只需提供返回对象中的确切名称即可。>
f2 = () => { const { email, password } = this.returnStateElement('email', 'password'); console.log(dataSender,email,password); }
示例
const foo = () => {
return {
'a': '1',
'b': '2'
}
}
const bar = () => {
const { a, b } = foo();
console.log(a)
console.log(b)
}
bar();
// Logs 1, 2