reactjs - Formik 表格不会清除
问题描述
我试图用它的 hoc 数据 onClick 填充我的 formik 表单的 initialValue。使用 reForm() 时将表单清除回其第一个初始值 (initValues) 不起作用,并且它总是返回到道具的值。
家长:
const [contactData, setContactData] = useState();
.
..
....
<First userData={contactData}/>
<Second userData={setContactData}/>
孩子:
function FirstComponent({userData}) {
const [isUpdate, setUpdate] = useState(false);
const initValues = {
id:'',
email: '',
name: '',
contact: ''
};
useEffect(() => {
// setContactData(userData)
userData!==undefined ? setUpdate(true) : setUpdate(false);
console.log("from form: ", userData)
}, [userData]);
const formik = useFormik({
enableReinitialize: true,
validationSchema: FormSchema,
initialValues: userData || initValues,
onSubmit: (values) => {
// same shape as initial values
console.log("the Data ", userData)
console.log("onsubmit ", values);
}
})
const resForm = () => {
formik.initialValues = {initValues};
console.log("prop ", userData)
console.log("formik values ",formik.initialValues)
formik.resetForm();
}
用 formik.resetForm() 中的 initValues 替换 initialValues 似乎可行,但它会使表单重新初始化为userData prop -function FormComponent({userData})
解决方案
部分修复..只是将formik.resetForm()
resForm() 中的修改为
formik.resetForm({
values:initValues
});
但是当控制台登录 resForm() 时,来自父级的道具(userData)仍然存在
推荐阅读
- java - 在 JTable 单元格中设置 StopCellEditing 在 JTextField 中单击时不会停止编辑
- python - 取字典中多个多维数组的平均值
- python - 尝试授权credentials.json时出错:UserWarning:无法访问token.json:没有这样的文件或目录
- php - 用于 silverstripe 4 缓存的 Redis
- python-3.x - subprocess.run() 的参数是否应该扩展?
- pyside - 只有 Key_Tab 和 ShiftModifier 不适用于 PySide
- node.js - 是否可以从异步函数中向请求发送数据?(Node.js/Express.js)
- excel - 如何复制/复制 Outlook MailItem
- universe - 来自 UNIVERSE/U2/PICK 的数据加密
- javascript - “这个”可以不是一个对象吗?