개발을 하면서 폼의 유효성을 조건부로 검사해야 할 일이 생겼다.
폼에 이름, 이메일, 전화번호가 있고
저장을 할 때는 이름, 이메일, 전화번호 그리고 다른 항목들을 모두 채워야하고,
임시저장을 할 때는 이름과 이메일만 입력을 해도 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을 하면 된다.