Reactjs 如何使用Formik有条件地初始化表单中的值?

Reactjs 如何使用Formik有条件地初始化表单中的值?,reactjs,formik,Reactjs,Formik,我在React项目中使用了Formik库。在我的formik表单中,我希望有条件地初始化值。如果是插入操作,则我希望将下拉列表的第一个值设置为默认值;如果是更新操作,则我希望从react状态分配值 下面是我的代码: constructor(props) { super(props); this.state = { data:{ studentId : '' } } }; render() { const s

我在React项目中使用了Formik库。在我的formik表单中,我希望有条件地初始化值。如果是插入操作,则我希望将下拉列表的第一个值设置为默认值;如果是更新操作,则我希望从react状态分配值

下面是我的代码:

constructor(props) {
    super(props);
    this.state = {
        data:{
          studentId : ''
        }
     }
 };

render() {

   const studentList = this.props.studentList && this.props.studentList;

          <Formik
             initialValues={this.state.data}
             enableReinitialize={true}
             onSubmit={this.formSubmit}
          >
          {({ values, setFieldValue }) => (
            <Field component={Select} name="studentId"
                   options={studentList}
                   value={studentList.filter(option => option.value == values.studentId)}
                   onChange={(opt) => {
                                        setFieldValue("studentId", opt.value);
                                      }}                                            
             />
          )}
          </Formik>

}
构造函数(道具){
超级(道具);
此.state={
数据:{
学生ID:'
}
}
};
render(){
const studentList=this.props.studentList&&this.props.studentList;
{({values,setFieldValue})=>(
option.value==values.studentId)}
onChange={(opt)=>{
setFieldValue(“学生ID”,可选值);
}}                                            
/>
)}
}
现在,如果是插入操作,则应将student id设置为学生列表中的第一条记录,如果是更新操作,则studentId将已存在于this.state.data中;我使用了一个表示操作类型的变量。因此,我不必担心知道当前的操作类型。我尝试在formik的initialValues中调用函数,但没有成功。我不能在渲染中设置状态,这将导致连续循环。那么我如何在formik中实现这一点呢