javascript - 将状态项设置回初始状态而不发生变化
问题描述
我在 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;
}
我尝试过执行以下操作:
this.props.member.${val}
this.props.member.val
我已经寻找其他问题和他们将整个状态对象更新回初始的地方,但这不是我想要做的。
如果您有地方可以查看如何执行此操作,我也愿意查看。
谢谢
解决方案
这是您使用字符串访问对象属性的方式:
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
推荐阅读
- sonarqube - JaCoCo 忽略 Lombok 代码,这是预期的吗?
- c# - UserManager.CheckPasswordAsync 总是返回失败
- scala - 为什么在scala中调用UDF时数据类型发生了变化
- sql - SQL查找特定时间段内的连续事务
- python - Python:创建基于插槽的库存系统
- python - 将对象数组转换为没有循环的数据框
- sql-server - 尝试从 .bak 还原到 2 个新数据库时出错,“正在使用的数据库”
- python - 仅从文本中删除未知单词,但保留标点符号和数字
- python - 在 Django 购物车应用程序中实现“稍后保存”功能?
- php - 合并两个数组以使整数值尽可能接近相等