我的组件有表单输入字段。这些使用了 useState 钩子及其值和每个输入字段的 setValue。我想优化我的组件,以便输入字段使用相同的自定义 Hook,我称之为 useFormInput
灵感来自 Dan Abramov https://youtu.be/dpw9EHDh2bM参见 49:42
这非常有效。但是现在我想在创建新练习后更新用户名。这是在 onSubmit 方法中。但我不知道该怎么做。在重构之前,我可以使用 setUserName(),但现在用户名是由通用自定义挂钩函数 useFormInput 设置的
用户名有一个 onChange 方法,所以我想我可以使用它。但是,这使用了 e.target.value,因为它用于输入字段。
组件:我注释掉了setUserName(''),这里我想更新用户名
const CreateExercise = () => {
const inputEl = useRef(null)
const username = useFormInput('')
const description = useFormInput('')
const duration = useFormInput(0)
const date = useFormInput(new Date())
const [users, setUsers] = useState([])
useEffect(() => {
axios
.get('http://localhost:5000/users/')
.then(res => {
if (res.data.length > 0) {
setUsers(res.data.map(user => user.username))
}
})
.catch(err => console.log(err))
}, [])
const onSubmit …Run Code Online (Sandbox Code Playgroud)