React js解构分配

问题描述 投票:1回答:1

我具有以下功能。

 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(),但是可以。

javascript reactjs variable-assignment assignment-operator destructuring
1个回答
0
投票

您可以执行以下操作,它将按照您想要的方式对其进行解构。但是您必须确保定义了dataSender!

let { dataSender: {email, password} } = this.returnStateElement('email', 'password');

-1
投票

以下内容应该起作用,您不必将结果分配给中间变量,只需提供返回对象中的确切名称即可。>

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

© www.soinside.com 2019 - 2024. All rights reserved.