[zod] 조건부로 유효성 검사하기

wishwish·2024년 3월 30일
0

React

목록 보기
3/5

개발을 하면서 폼의 유효성을 조건부로 검사해야 할 일이 생겼다.

폼에 이름, 이메일, 전화번호가 있고
저장을 할 때는 이름, 이메일, 전화번호 그리고 다른 항목들을 모두 채워야하고,
임시저장을 할 때는 이름과 이메일만 입력을 해도 vallidation을 통과할 수 있도록 해야했다.

const 저장타입_enum = z.enum(["임시저장", "저장"]
const 임시저장_스키마 = {
	type: z.literal(저장타입_enum.enum.임시저장),
    ```
}
const 저장_스키마 = {
	type: z.literal(저장타입_enum.enum.저장),
    ```
}
const 저장스키마_조건 = z
  .discriminatedUnion("type", [저장_요청_스키마, 임시저장_요청_스키마])

이렇게 스키마를 만들어주고 사용할 때

methods.setValue("type", "임시저장");
methods.handleSubmit(```)

상황에 따라 type을 저장 또는 임시저장으로 바꿔주고 handleSubmit을 통해 validation을 하면 된다.

0개의 댓글