Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
R

rhf-stepform

> 前端框架
Open source

Step form built using React Hook Form, Yup, Typescript, and Zustand

195 stars0 likes0 views
WebsiteGitHub

About

Step form built using React Hook Form, Yup, Typescript, and Zustand

React-Hook-Form Stepform

Code to observe:

  • https://github.com/theodorusclarence/rhf-stepform/tree/main/pages/form, form pages
  • https://github.com/theodorusclarence/rhf-stepform/blob/main/store/useFormStore.tsx, where form data is stored
  • https://github.com/theodorusclarence/rhf-stepform/blob/main/lib/yup.ts, yup schema
  • https://github.com/theodorusclarence/rhf-stepform/blob/main/types.ts, form type declaration
  • https://github.com/theodorusclarence/rhf-stepform/tree/main/components/Forms, form components

Key Points

Each time submitting, data is stored in FormStore

const onSubmit = (data: StepOneData) => {
  setData({ step: 1, data });
  router.push('/form/step-2');
};

The stored data will be used as a default value on revisit

const { stepOne, setData } = useFormStore();

const methods = useForm({
  mode: 'onTouched',
  resolver: yupResolver(stepOneSchema),
  defaultValues: stepOne || {},
});

Upload Form

The tricky part lies in Upload Form. The data that is originally stored by the input is File object, but if we store it in zustand, it will be transformed into regular object. This will cause an error when we invoke the URL.createObjectURL(file) for the FilePreview.

So we need to invoke it while we get the original File, and store the URL as a new property. In that way, we only invoke it once, and just use the blob url for revisit.

const acceptedFilesPreview = acceptedFiles.map(
  (file: FileWithPreview) =>
    Object.assign(file, {
      preview: URL.createObjectURL(file),
    })
);

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Theodorus Clarence

Muhammad Rizqi Tsani

This project follows the all-contributors specification. Contributions of any kind welcome!

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

TypeScriptnextjsreact-hook-formtypescriptyup

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 18, 2026
Category前端框架
PricingOpen source

> Related tools

R
React
用于构建用户界面的 JavaScript 库
V
Vue.js
渐进式 JavaScript 框架
N
Next.js
基于 React 的全栈 Web 框架