首页 > 解决方案 > “解析错误:类型转换表达式应该用括号括起来”与 React Hooks

问题描述

我有许多输入值与对象的属性匹配:

示例

const [fields, setFields] = useState({
  city: ""
})
<input type="text" name="city" value={fields.city} onChange={e => handleChange(e) />

现在,我想做一个 handleChange 函数,当输入值发生变化时,它会更新对象值,

function handleChange(e) {
  setFields(...fields, [e.target.name]: e.target.value)
}

但是当我这样做时,我得到了错误

“解析错误:类型转换表达式应该用括号括起来”

,

有人能帮我吗 ?谢谢 !

标签: javascriptreactjs

解决方案


您在字段周围缺少括号,因为它是一个对象:

function handleChange(e) {
  setFields({...fields, [e.target.name]: e.target.value})
}

同样在这种情况下,最好使用 的函数形式setState,因为下一个状态的值取决于前一个状态:

function handleChange(e) {
  setFields(currentFields => ({...currentFields, [e.target.name]: e.target.value}))
}

推荐阅读