我有一个从后端获取的数据:
fetchUserData = async () => {
...fetching data
this.setState({
username: resp.data.data.uname
});
}
字符串
并且我希望Formik从后端验证保存的数据,所以我在Formik组件中添加了enableReinitialize:
<Formik
initialValues={{
username: this.state.username,
password: this.state.password,
confirmPassword: this.state.confirmPassword
}}
validationSchema={this.schema}
enableReinitialize
>
型
但问题是,它现在重置了 prop 的触动值:
的数据
谢谢.
1条答案
按热度按时间dw1jzc5e1#
在重新初始化后,没有办法保持被触摸的状态。我们将不得不实现一个变通方案来备份
touched
对象,并使用initialTouched
来恢复它。或者,给予
enableReinitialize
标志,如果你不想每次状态值改变时都重置表单。你可以使用FormikinnerRef
手动调用resetForm()
,setValues()
,setFieldValue()
等,根据你的用例在合适的时间。使用方法:
个字符