首页 > 解决方案 > 将状态项设置回初始状态而不发生变化

问题描述

我在 React 中有一个表单,我正在更新一个表单。此表单已经具有初始值,我想在输入为空时将状态中的表单项更新回其初始值''

当用户键入或更新字段时,我将不可变地更新状态对象:

handleInputChange = (name, {value}) => {

    if(value === '') {
      this.setInitialState(name);
    }

    let val = {...this.state, [name] : value}

    this.setState(val);
  }

setInitialState函数可以采用正在更新的输入字段的名称。问题是如何在不将整个状态对象更新回初始值的情况下仅将状态中的一项设置回其初始值,并且我正在尝试不可变地执行此操作。

这是该功能:

 setInitialState = (val) => {
    let active = this.props.member.active;
    let age = this.props.member.age;
    let firstname = this.props.member.firstname;
    let lastname = this.props.member.lastname;
    let gender = this.props.member.gender;
    let id = this.props.member.id;
    let patientId = this.props.member.patientId;



  }

我尝试过执行以下操作:

  1. this.props.member.${val}
  2. this.props.member.val

我已经寻找其他问题和他们将整个状态对象更新回初始的地方,但这不是我想要做的。

如果您有地方可以查看如何执行此操作,我也愿意查看。

谢谢

标签: javascriptreactjs

解决方案


这是您使用字符串访问对象属性的方式:

this.props.member[val]

基于您尝试的一般示例:

var obj = { foo: "bar" };
console.log(obj.foo); // "bar". This is dot notation.
console.log(obj["foo"]); // "bar". This is what you need here - bracket notation
console.log(obj."foo"); // Syntax error
console.log(obj.${"foo"}); // Syntax error

推荐阅读