Написание схемы с помощью Zod Flashcards

(1 cards)

1
Q

Написание схемы с помощью Zod

A
  1. Создание схемы:
    import * as z from ‘zod’ !! Обратить внимание

export const loginSchema = z.object({
email: z.email(),
password: z.string(),
rememberMe: z.boolean(),
})

  1. Применение resolver:
    import { zodResolver } from ‘@hookform/resolvers/zod’

export const Login = () => {
//

const {
register,
handleSubmit,
reset,
control,
formState: { errors },
} = useForm<LoginInputs>({
resolver: zodResolver(loginSchema),
defaultValues: { email: '', password: '', rememberMe: false },
})</LoginInputs>

//
}

3.Чтобы не писать типы для формы вручную, можно воспользоваться z.infer:
export type LoginInputs = z.infer<typeof></typeof>

  1. Схема domainTaskSchema для валидации типа ответа сервера в fetchTasksTC:
    export const tasksSlice = createAppSlice({
    //
    reducers: create => ({
    fetchTasksTC: create.asyncThunk(
    async (todolistId: string, { dispatch, rejectWithValue }) => {
    try {
    dispatch(setAppStatusAC({ status: ‘loading’ }))
    const res = await tasksApi.getTasks(todolistId)
    domainTaskSchema.array().parse(res.data.items) // 💎
    dispatch(setAppStatusAC({ status: ‘succeeded’ }))
    return { todolistId, tasks: res.data.items }
    } catch (error: any) {
    console.log(error)
    handleServerNetworkError(error, dispatch)
    return rejectWithValue(null)
    }
    }
    //
    ),
    //
    }),
    })
How well did you know this?
1
Not at all
2
3
4
5
Perfectly