当isStudent
为true时,我想将isStudent
更改为true。我尝试使用handleChange和useEffect,但是它不起作用...如何在React Hooks + Formik中使用handleChange
。
useEffect((values, setFieldValue) => {
console.log('values', values)
// undefined
if(values.isStudentTicket === true) {
setFieldValue('isStudent', true)
}
}, [])
return (
<Formik
enableReinitialize={enableReinitialize}
initialValues={initialValues}
validate={validate}
onSubmit={onSubmit}
>
{({
isSubmitting,
isValid,
setFieldValue,
values,
}) => {
return (
<Form>
<FastField
type="checkbox"
name="isStudent"
onChange={handleChange}
defaultChecked={values.isStudent}
/>
<FastField
type="checkbox"
name="isStudentTicket"
onChange={handleChange}
defaultChecked={values.isStudentTicket}
/>
答案 0 :(得分:1)
您可以处理onChange
函数本身中的逻辑
<Form>
<FastField
type="checkbox"
name="isStudent"
onChange={handleChange}
defaultChecked={values.isStudent}
/>
<FastField
type="checkbox"
name="isStudentTicket"
onChange={(e) => {
handleChange(e);
if(e.target.checked === true)
setFieldValue('isStudent', true)
}}
defaultChecked={values.isStudentTicket}
/>