如何在React JS中的Formik中将状态值传递给初始值

Abh*_*ram 4 jsx reactjs formik

我在我的React应用程序中使用Formik库。最初,我在构造函数中声明了状态值,在componentDidMount中,我使用该应用程序响应调用API来更新状态值,有人可以帮助我将状态值传递给fomik初始值

在我的情况下,formik采用了在构造函数中声明的初始状态值。

class Dropdown extends Component {

        constructor(props) {
            super(props);
            this.state = {
              //some data
            };
          }
          componentDidMount() {
           //api call
           this.setState( {
              //update state values with api response data
            });  
         }
       render() {
            return (
            <Formik
              initialValues={this.state}
              validate={validate(validationSchema)}
              onSubmit={onSubmit}
              render={
                ({
                  values,
                  errors,
                  touched,
                  status,
                  dirty,
                  handleChange,
                  handleBlur,
                  handleSubmit,
                  isSubmitting,
                  isValid,
                  handleReset,
                  setTouched
                }) => ( 
                 //form uses initialValues
              )} />
              )
            }
    }
Run Code Online (Sandbox Code Playgroud)

小智 17

回答归功于 Abhiram,但如果您已更新为 hooks:

useFormik({
  initialValues: initialData,
  enableReinitialize: true,
  onSubmit: values => {
    // Do something
  }
});
Run Code Online (Sandbox Code Playgroud)


Abh*_*ram 5

将enableReinitialize添加到formik解决了我的问题

     <Formik
          enableReinitialize
          ..
          render={
            ({
              ..
            }) => ( 
             //form uses initialValues
          )} />
Run Code Online (Sandbox Code Playgroud)