Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何将自定义道具/方法注入“handleSubmit”?_Reactjs_React Hooks_React Context_React Hook Form_Unstated - Fatal编程技术网

Reactjs 如何将自定义道具/方法注入“handleSubmit”?

Reactjs 如何将自定义道具/方法注入“handleSubmit”?,reactjs,react-hooks,react-context,react-hook-form,unstated,Reactjs,React Hooks,React Context,React Hook Form,Unstated,我正在使用,并且正在寻找一种将自定义道具注入钩子返回的handleSubmit方法的方法。我之所以需要这样做,是因为我的组件充当了的使用者,我想在提交表单后更新状态。我可能还想将道具传递给该方法 从API来看,这似乎是不可能的。关于解决方法或如何做到这一点有什么想法吗?我不使用此库,但从useForm钩子返回的getValues函数似乎打开了将组件状态与react钩子表单中存储的表单数据同步的方法: 我不使用此库,但从useForm钩子返回的getValues函数似乎打开了将组件状态与react

我正在使用,并且正在寻找一种将自定义道具注入钩子返回的handleSubmit方法的方法。我之所以需要这样做,是因为我的组件充当了的使用者,我想在提交表单后更新状态。我可能还想将道具传递给该方法


从API来看,这似乎是不可能的。关于解决方法或如何做到这一点有什么想法吗?

我不使用此库,但从useForm钩子返回的getValues函数似乎打开了将组件状态与react钩子表单中存储的表单数据同步的方法:


我不使用此库,但从useForm钩子返回的getValues函数似乎打开了将组件状态与react钩子表单中存储的表单数据同步的方法:


为什么不在handleSubmit期间更新状态


为什么不在handleSubmit期间更新状态


不幸的是,在我的情况下,我无法从函数体访问状态,只能从返回。。。块我在用。但是@Mateusz在imo中提出了一个很好的解决方案。不幸的是,在我的情况下,我无法从函数体访问状态,只能从返回。。。块我在用。但是@Mateusz提出了一个很好的解决方案。
import React, { useMemo, useEffect, useState } from "react";
import { useForm } from "react-hook-form";

export default function App() {
  const { register, getValues } = useForm();
  const [ valuesState, setValuesState ] = useState();

  const values = useMemo(() => getValues());

  useEffect(() => setValuesState(values), [values]);

  return (
    <form>
      [...]
    </form>
  );
}
export default function App() {
  const { register, getValues } = useForm();
  const onSubmit = data => {
    // do your state update here update(data)
  }

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      [...]
    </form>
  );
}