首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formik表单不会清除

Formik表单不会清除
EN

Stack Overflow用户
提问于 2021-08-31 13:43:23
回答 1查看 167关注 0票数 0

我试图用它的特殊数据initialValue填充formik表单的onClick。当使用initialValue ()时,将表单清除回第一个reForm (initValues)不起作用,而且它总是返回到道具的值。

家长:

代码语言:javascript
复制
const [contactData, setContactData] = useState();
.
..
....

<First userData={contactData}/>
<Second userData={setContactData}/>

儿童:

代码语言:javascript
复制
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();
    }

将initialValues替换为formik.resetForm()中的initValues似乎是可行的,但它使表单重新初始化为userData prop - function FormComponent({userData})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-31 14:57:48

部分固定..。刚刚将formik.resetForm()中的resForm()修改为

代码语言:javascript
复制
formik.resetForm({
  values:initValues
});

但是当控制台登录到userData()时,来自父服务器的道具(userData)仍然保持不变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68999841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档