[React Hook Formv7] 스냅 구조로 가시를 간단하게 구현합니다.
10185 단어 react-hook-formReactTypeScript
MUI v5와 React Hook Formv7의 도입에 관하여 아래의 글은 매우 통속적이고 알기 쉽게 요약하였다.이 기사도 이 기사에 기재된 코드에 따라 제작되었다.꼭 참고하세요.
이번에는 다음과 같은 상황에서 유효기간을 간단하게 실시해 봅시다.
App.tsx
<Stack spacing={3}>
// ネスト化されたコンポーネントにおいても簡単にバリデーションを実装したい
<EmailInput />
<NameInput />
<PasswordTInput />
<Button
color="primary"
variant="contained"
size="large"
onClick={handleSubmit(onSubmit)}
>
作成
</Button>
</Stack>
메서드useFormContext
사용(이 전용)이 사용자 정의 스크립트를 사용하면 창의 상하문에 접근할 수 있습니다.useFormContext는 깊이 박힌 구조체에서 사용하고 상하문을 프로파일로 상대방에게 전달하는 것이 번거로운 상황에서 사용하고자 합니다. -React Hook Form
그러나 기능을 정확하게 발휘하기 위해서는 상기 코드
FormProvider
구성 요소 패키지를 사용해야 하기 때문에 수정된 코드 형식은 다음과 같다.App.tsx
import { useForm, FormProvider } from "react-hook-form";
// フォームの型
export interface FormInputState {
・・・・
}
// バリデーションルール
export const schema = yup.object({
email: yup
.string()
.required("必須内容です")
.email("正しいメールアドレスを入力して下さい"),
・・・・
});
export default function App() {
// FormProviderはすべてのuseFormメソッドを必要とするため、
// 変数metohdsにuseFormメソッドを値をして渡した後に、オブジェクトの分割代入をしています。
const methods = useForm<StateFormInput>({
resolver: yupResolver(schema),
});
const { handleSubmit } = methods;
// フォーム送信時の処理
const onSubmit: SubmitHandler<SampleFormInput> = (data) => {
console.log(data);
};
return (
<FormProvider {...methods} >
<Stack spacing={3}>
<EmailInput />
<NameInput />
<PasswordTInput />
<Button
color="primary"
variant="contained"
size="large"
onClick={handleSubmit(onSubmit)}
>
登録
</Button>
</Stack>
</FormProvider>
);
}
그 밖에 플러그인 구성 요소의 코드는 다음과 같다.NameInput 구성 요소와 PasswordInput 구성 요소도 마찬가지로 생성됩니다.
EmailInput.tsx
import { useFormContext } from "react-hook-form";
export default function EmailInput() {
const {
register,
formState: { errors },
} = useFormContext();
return (
<>
<TextField
required
label="Email"
type="email"
{...register("email")}
error={"email" in errors}
helperText={errors.email?.message}
/>
</>
);
}
동작 확인표의 발송에 문제가 없습니다.
검증도 문제 없어요.
결론
끼워 넣은 구조도 몇 줄만 검증했다.
아이고~ React Hook Form이 편하네요.
그러나 "다른 용도로도 사용하고 싶은 구성 요소라면 검증된 논리만 분리해서 사용할 수 없나요?"이런 의문이 쏟아졌다.
아래의 보도는 이 의문에 대해 매우 큰 참고 가치가 있다.정말 고마워요.
이런 내용을 무료로 읽을 수 있다는 것은 정말 편리한 사회이다
Reference
이 문제에 관하여([React Hook Formv7] 스냅 구조로 가시를 간단하게 구현합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ki-tamago/items/cc87c624d94ed49b4487텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)