好的,所以我尝试在react中构建一个表单,在这里我可以在多个输入中输入值,然后提交并让这些值填充表中指定的单元格。我正在尝试使用“onchange”更新状态,但是当我输入值时,我的初始状态将被完全覆盖。
所以,如果我设定:
state = {
Jan012019: {
first: null,
second: null
}
};
然后尝试通过在“First”的输入中输入“3”来更新状态,方法是:
this.setState(
{
Jan012019: {
[e.target.name]: e.target.value
}
},
function() {
console.log(this.state);
}
);
状态显示为:
Jan012019 {
first: '3'
}
完全从状态中删除“second”,如果我尝试在“second”输入中同时输入值,它将从状态中删除“first”。这是怎么回事?我看到过其他的例子和解决方案,我很确定我的代码和这里的另一个问题的解决方案完全一样,但仍然不能正常工作。完整代码如下。
import React from "react";
class InputForm extends React.Component {
state = {
Jan012019: {
first: null,
second: null
}
};
updateTable = e => {
this.setState(
{
Jan012019: {
[e.target.name]: e.target.value
}
},
function() {
console.log(this.state);
}
);
};
onClick = e => {
e.preventDefault();
console.log(this.state);
};
render() {
return (
First Input
name="first"
type="number"
placeholder="Enter value"
onChange={this.updateTable}
/>
Second Input
name="second"
type="number"
placeholder="Enter value"
onChange={this.updateTable}
/>
Click
);
}
}
export default InputForm;
我还尝试将输入值设置为:
value={this.state.Jan012019.first}
看看这是否有什么不同,但不去。