我正在将<FieldArray />
与Formik一起使用。在该项目中,当客户每次按下“添加更多”按钮时,它将在Formik的管理下生成一个动态字段。
在Formik中,我使用来自state的initialValues,并启用enableReinitialize = {true}。当api调用将状态从空数组更新为数组中的一些记录时,修改字段时新生成的字段将引发此控制台错误:-
警告:组件正在更改类型undefined为受控的不受控制的输入。输入元素不应从不受控制切换为受控制(反之亦然)。在组件的使用寿命中决定使用受控还是不受控制的输入元素。
state = {
formData: {
conference_sections: []
}
}
componentDidMount() {
// call api; data array returned will setState to conference_sections: []
}
<Formik
enableReinitialize={true}
initialValues={this.state.formData}
validationSchema={Schema}
onSubmit={this.handleSubmit}
component={this.form}
/>
还有更多发现:-
api调用Conference_sections前的状态为空数组-> api调用带有3条记录的Conference_sections之后的状态->将引发错误
在api调用Conference_sections 3记录之前的状态->在api调用带有3条记录的Conference_sections之后的状态->不会引发错误
在api调用Conference_sections 3条记录之前的状态->在api调用带有3条记录的Conference_sections之后的状态->“添加更多”按钮添加1条记录,总共4条记录->会抛出错误
我的观察是,当更新的记录数大于初始状态的记录数时,Formilk将无法管理新字段。
我该如何改善情况?