我是React的新手,我试图使用useState制作一个表单。我得到一个错误。"TypeError: setValues不是函数handleInputChange"
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是React的新手,我试图使用useState制作一个表单。我得到一个错误。"TypeError: setValues不是函数handleInputChange"相关的知识,希望对你有一定的参考价值。
import React, {useState} from "react"
import {Grid, TextField} from "@material-ui/core"
const initialFieldValues = {
sName: ''
}
const StudentForm = (props) => {
const {values, setValues} = useState(initialFieldValues)
const handleInputChange = e => {
const {name,value} = e.target
setValues({
...values,
[name]: value
})
}
return (
<form autoComplete = "off" noValidate>
<Grid container>
<Grid item={6}>
<TextField
name = "sName"
variant = "outlined"
label = "Full Name"
value = {values.sName}
onChange = {handleInputChange}
/>
</Grid>
</Grid>
</form>
)
}
export default StudentForm
答案
你必须在useState()中使用方括号。
const [values, setValues] = useState(initialFieldValues);
另一答案
你使用了错误的括号。请改成方括号。
const [values, setValues] = useState(initialFieldValues)
另一答案
React api useState
钩子将返回一个 array
你可以拆解它的 value
和 setValue
这样的功能。
import React, {useState} from "react"
import {Grid, TextField} from "@material-ui/core"
const initialFieldValues = {
sName: ''
}
const StudentForm = (props) => {
const [values, setValues] = useState(initialFieldValues) // change {} to []
const handleInputChange = e => {
const {name,value} = e.target
setValues({
...values,
[name]: value
})
}
return (
<form autoComplete = "off" noValidate>
<Grid container>
<Grid item={6}>
<TextField
name = "sName"
variant = "outlined"
label = "Full Name"
value = {values.sName}
onChange = {handleInputChange}
/>
</Grid>
</Grid>
</form>
)
}
export default StudentForm
以上是关于我是React的新手,我试图使用useState制作一个表单。我得到一个错误。"TypeError: setValues不是函数handleInputChange"的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 usestate 和 setstate 而不是 this.setState 使用 react 和 typescript?
React.js useState hook 导致过多的重新渲染并且无法更新我的状态