我在我的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
)} />
)
}
}
答案 0 :(得分:1)
您可以强制将每个值设置为initialValues prop:
<Formik
initialValues={
formValue1: this.state.value1,
formValue2: this.state.value2,
...
}
validate={validate(validationSchema)}
onSubmit={onSubmit}
render={
({
values,
errors,
touched,
status,
dirty,
handleChange,
handleBlur,
handleSubmit,
isSubmitting,
isValid,
handleReset,
setTouched
}) => (
//form uses initialValues
)
}
/>
答案 1 :(得分:1)
回答 Abhiram,但如果您已更新为钩子:
useFormik({
initialValues: initialData,
enableReinitialize: true,
onSubmit: values => {
// Do something
}
});
答案 2 :(得分:0)
将enableReinitialize添加到formik解决了我的问题
<Formik
enableReinitialize
..
render={
({
..
}) => (
//form uses initialValues
)} />