使用 React Hook Form、Yup、TypeScript 和 Zustand 构建的步骤表单
const onSubmit = (data: StepOneData) => {
setData({ step: 1, data });
router.push('/form/step-2');
};
const { stepOne, setData } = useFormStore();
const methods = useForm({
mode: 'onTouched',
resolver: yupResolver(stepOneSchema),
defaultValues: stepOne || {},
});
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),
})
);
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,或尚未同步最近议题。