【发布时间】:2021-06-01 07:12:09
【问题描述】:
我有以下代码:
import React,{useState} from 'react'
function ReactForm() {
const iState =[{
Name : '',
Email :'',
Salary :0
}]
const [state, setstate] = useState(iState);
function validationHandler()
{
console.log(state);
}
return (
<div>
Name : <input type="text" onChange={(e)=>{setstate(...state, state.Name=e.target.value)}}></input>
<br></br>
Email : <input type="text" onChange={(e)=>{setstate(...state, state.Email=e.target.value)}}></input>
<br></br>
Salary : <input type="text" onChange={(e)=>{setstate(...state, state.Salary=e.target.value)}}></input>
<br></br>
<button onClick={validationHandler}>Validate Us</button>
</div>
)
}
export default ReactForm
我在这里执行基本验证。我收到错误消息:TypeError: state is not iterable
在通过 stackoverflow 上的几个链接之后,我添加了 - [ ] over state ,但它没有帮助。
编辑 1:
添加后 :- setstate({...state, state.Name: e.target.value}) : 意外令牌,预期 "," (18:79)
【问题讨论】:
-
setstate({...state, state.Name: e.target.value}) -
@boxdox - 我应用了这个,但出现错误,请参阅 Edit1
-
还将
iState移到你的ReactForm函数之外,否则你每次击键都会创建一个新的iState。 -
您可以将 iState 保持为对象并像这样更新状态: setstate({...state, Salary: e.target.value});
-
每次渲染都会创建 iState,但只会使用第一个。您的状态也是一个数组,但您似乎认为它是一个对象。 setter 中的
=而不是:似乎你需要先更好地学习一些 JS 基础
标签: javascript reactjs react-hooks state