首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-hook-form多步表单问题

react-hook-form多步表单问题
EN

Stack Overflow用户
提问于 2021-07-21 21:58:21
回答 1查看 138关注 0票数 1

我正在用react-hook-form实现一个多步骤表单,我的问题是当我返回到上一页时,输入字段没有用表单数据重新初始化。

我使用来自react-hook-form<FormProvider />组件将表单数据注入到页面中,并且我的input组件是使用来自useFormContext()钩子的register方法注册的

代码语言:javascript
复制
const CreateAccount = () => {
  const [currentStep, setCurrentStep] = useState(0);

  const methods = useForm<FormData>({
    mode: "onChange",
  });
  const onSubmit = (data) => console.log(data);

  const handleNextStep = () => {
    if (currentStep >= 5) return;
    setCurrentStep(currentStep + 1);
  };
  const handlePreviousStep = () => {
    if (currentStep <= 0) return;
    setCurrentStep(currentStep - 1);
  };

  const renderContent = () => ({
    [RegistrationSteps.UsernameEmail]: <UsernameEmail handleNextStep={handleNextStep} handlePreviousStep={handlePreviousStep} />,
    [RegistrationSteps.Password]: <CreatePassword handleNextStep={handleNextStep} handlePreviousStep={handlePreviousStep} />,
  });

  return (
    <Container maxWidth="sm">
      <FormProvider {...methods}>
        <form onSubmit={methods.handleSubmit(onSubmit)}>
            {renderContent()[currentStep]}
        </form>
      </FormProvider>
    </Container>
  );
};

export default CreateAccount;

下面是输入字段的外观

代码语言:javascript
复制
 const {
    register
  } = useFormContext();


    <TextField
      label="Email"
       {...register("email")}
     />

即使表单仍然保持其状态的数据,当我在表单页之间来回切换时,它也不会填充到相应的字段中。

EN

回答 1

Stack Overflow用户

发布于 2021-07-21 22:53:58

我建议将步骤中的每个组件创建为具有其自己的useForm()实例的表单,并将步骤包装在状态提供程序中以跨不同的步骤存储数据,而不是全局级别的单个表单。这样,您就可以在初始化时使用useFormdefaultValues选项从相应的状态为步骤表单分配值。

  • 你可以在this上找到我正在解释的基本架构。

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

https://stackoverflow.com/questions/68470855

复制
相关文章

相似问题

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