【问题标题】:State in Reactjs holding the previous state value, how to update the state with new edited form valueReactjs中的状态保存以前的状态值,如何用新编辑的表单值更新状态
【发布时间】: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


【解决方案1】:

您似乎正在将数据附加到数组中,而不是用新值替换它。如果您不想保留以前的结果,则应初始化一个新数组。

const info = {country : country};//country array
 const data = [];

 data.push(info);

 this.setState({
   data:data
  });

【讨论】:

  • 我只是复制他的代码并应用一个简单的更改。没必要粗鲁。
  • 感谢您的回复。如前所述,现在 {this.state.data} 将正确保存一些数据?现在我想再次将新值更新为状态,然后我们将使用当前表单数据获取先前的状态。那就是问题所在。你明白我的意思了吗??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2023-01-28
相关资源
最近更新 更多