Когда я изначально изучал React Component, мне всегда говорили ставить все в this.state
. Будь то некоторые данные, которые часто обновляются, или те, которые вообще не обновляются.
Однако, с реализацией перехватчиков React, я не уверен, как часто я должен использовать useState
, даже если состояние не будет обновляться.
Позвольте привести пример логики моей формы:
const FormAuth = props => {
//Frequently updates
const [validInput, setValidInput] = useState({
isCompletedForm: Boolean,
firstName: Boolean,
lastName: Boolean,
email: Boolean,
password: Boolean,
confirmPassword: Boolean
});
// Never updates
const [formSchema, setFormSchema] = useState({
firstName: Joi.string().required(),
lastName: Joi.string().required(),
email: Joi.string().required().email().regex(emailRegex),
password: Joi.string().required().regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$^+=!*()@%&?.]).{8,30}$/),
confirmPassword: Joi.string().required()
})
// Never updates
const [inputRef, setInputRef] = useState({
firstNameRef: React.createRef(),
lastNameRef: React.createRef(),
emailRef: React.createRef(),
passwordRef: React.createRef(),
confirmPasswordRef: React.createRef()
});
// render some JSX
}
Здесь у меня 3 состояния. Первым состоянием являются логические значения, которые говорят, что входные данные выглядят хорошо. Второе состояние - это formSchema, которая никогда не будет обновлена. Наконец, третье состояние - это ссылки для каждого из входов, которые также никогда не будут обновляться.
Мой вопрос: Было бы разумнее иметь только одно состояние для validInputs
, поскольку оно часто обновляется, а затем для formSchema
и inputRef
создать const объект с ванильным JavaScript? Или все должно перейти в состояние, как раньше?
Мне кажется, что было бы более целесообразно использовать useState
, только если это состояние будет обновляться, но я пытаюсь понять, каково правильное соглашение для хуков, движущихся вперед.