Я пытаюсь узнать, как перехватчики React работают с простым модалом аутентификации, который я настроил. У меня есть пользовательский хук useForm
, который обрабатывает состояние формы, и мне любопытно, как я могу получить доступ к values
до его объявления.
function LoginModal () {
console.log('outside values', values) // undefined
const submitForm = async () => {
console.log('inside values', values) // email, password values exist
const request = {
method: 'POST',
url: '/auth/login',
data: {
email: values.email,
password: values.password
}
}
await axios(request)
}
const [values, handleChange, handleSubmit] = useForm(submitForm)
return <div>some form stuff</div>
}
`useForm.js`
import { useState } from 'react'
const useForm = submitForm => {
const [state, setState] = useState({})
const handleChange = event => {
event.persist()
setState(state => ({ ...state, [event.target.name]: event.target.value }))
}
const handleSubmit = event => {
event.preventDefault()
submitForm()
}
return [state, handleChange, handleSubmit]
}
export default useForm
Может ли кто-нибудь объяснить мне, почему values
существует только внутри функции submitForm
, и как она доступна до того, как const [values]
даже объявлен? Я считаю, что const
декларации не подняты. Спасибо!