Javascript 使用方法参数作为对象键进行反应以更新状态

Javascript 使用方法参数作为对象键进行反应以更新状态,javascript,reactjs,reactive-programming,Javascript,Reactjs,Reactive Programming,如何使用函数参数作为属性名来更新状态,即 onStudentPinChange = (propertyName, e) => { this.setState({ formFields: { ...this.state.formFields, propertyName: e.target.value } }); }; 上面的代码抛出错误 我想使用propertyName变量作为对象键,我在谷歌上搜索并尝试了许多不同的技术,如this.state.formFiel

如何使用函数参数作为属性名来更新状态,即

onStudentPinChange = (propertyName, e) => {
    this.setState({
      formFields: { ...this.state.formFields, propertyName: e.target.value }
    });
};
上面的代码抛出错误

我想使用
propertyName
变量作为对象键,我在谷歌上搜索并尝试了许多不同的技术,如
this.state.formFields[propertName]

我正在创建一个新的web应用程序,我有几个表单字段需要填写才能登录到管理区域。我有三种方法,它们基本上是做同样的事情,只是更新相关的状态

onStudentPinChange = (propertyName, e) => {
    var item = { ...this.state.formFields };
    item[propertyName] = e.target.value;
    console.log(item);
    this.setState({
      formFields: { ...this.state.formFields, studentPin: e.target.value }
    });
  };

  onCNICChange = (propertyName, e) => {
    this.setState({
      formFields: { ...this.state.formFields, cnic: e.target.value }
    });
  };

  onPasswordChange = (propertyName, e) => {
    this.setState({
      formFields: { ...this.state.formFields, password: e.target.value }
    });
  };



<InputField
        type="text"
        name="student_pin"
        value={this.state.formFields.studentPin}
        placeholder="Student Pin"
        onChange={this.onStudentPinChange.bind(this, "studentPin")}
        faClassName="fa-user"
      />
onStudentPinChange=(propertyName,e)=>{
var item={…this.state.formFields};
项目[propertyName]=e.target.value;
控制台日志(项目);
这是我的国家({
formFields:{…this.state.formFields,studentPin:e.target.value}
});
};
onCNICChange=(propertyName,e)=>{
这是我的国家({
formFields:{…this.state.formFields,cnic:e.target.value}
});
};
onPasswordChange=(propertyName,e)=>{
这是我的国家({
formFields:{…this.state.formFields,密码:e.target.value}
});
};
我只希望有一个函数,只使用该properName更新所有三个字段


问候

欢迎来到StackOverflow。您可以通过将属性名称括在括号中来实现这一点,以便它将键作为变量而不是实际的propertyName进行计算

onStudentPinChange = (propertyName, e) => {
    this.setState({
        formFields: {
            ...this.state.formFields,
            [propertyName]: e.target.value
        }
    });
};

您可以在编辑器中创建一个代码段,然后将javascript代码粘贴到那里。除此之外,请确保代码正确缩进,也可以用三个反标记将其环绕,如
`
,确保按照消息所述执行。还要确保代码块前面有一个空行。同时滚动整个输入,确保没有您忽略的“遗留问题”。感谢trincot和Keno Clayton,在您的帮助和建议下,我最终发布了它。您可以使用
{[propertyName]:value}
谢谢@更多详细信息