【发布时间】:2019-09-28 06:50:36
【问题描述】:
使用 ref 的 OnSubmit 函数获取所有表单数据并添加到 react 中的状态值(仍在同一页面中),现在用户更改表单中的一个输入字段并提交,更改的值是否被收集并更新到状态,但状态值显示以前的表单值和新编辑的表单值。我只想要该州的新表单值。请帮忙
我试图通过在每个提交函数上将其设为未定义、null 来清除状态值
constructor (props) {
...
this.state = {
data :[]
}
render {
...
...
<table>
<select ref={country0} name=country0>
<option value="china">china</option>
....
<select ref={country1} name=country1>
<option value="London">London</option>
.....
onSubmit = event => {
....
let country = [];
//for loop (looping table row's for iteration)
temp = ReactDOM.findDOMNode(this.refs['country' +i]);
country[i] = temp.value; //adding value to the array
const info = {country : country};//country array
const data = this.state.data;
data.push(info);
this.setState({
data:data
});
//also tired
const data = [...this.state.data, info]
this.setState({
data:data
});
displaying state value
Actual :
china
London
on edit (user changes China to Japan and London to China)
I got
china ---- previous value
London ----- previous value
Japan
china
Expected :
Japan
china
【问题讨论】:
-
这是一个糟糕的问题,有糟糕的写作和糟糕的代码示例。请编辑您的问题并使用干净的代码来解释您的问题。
-
嗨 novonimo ,我只是按照说明发布了问题,为了简单起见,我用简单的语言解释了我的场景。而且我不明白你在我刚刚给出 state 、 render 和 on submit 事件以及实际和预期结果的代码中发现了什么问题
-
以任何方式解决我的问题,我将状态变量从 [] 更改为 {}
标签: reactjs