无法在Reach.Js中处理Formik中的更改

时间:2020-06-12 09:10:57

标签: reactjs formik

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}
            />  

1 个答案:

答案 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}
        />