Spec-Zone.ru › Valibot

partialCheckAsync

Creates a partial check validation action.

const Action = v.partialCheckAsync<TInput, TPaths, TSelection, TMessage>(
  paths,
  requirement,
  message
);

Generics

  • TInput extends PartialInput
  • TPaths extends RequiredPaths
  • TSelection extends DeepPickN<TInput, TPaths>
  • TMessage extends ErrorMessage<PartialCheckIssue<TSelection>> | undefined

Parameters

  • paths ValidPaths<TInput, TPaths>
  • requirement (input: TSelection) => MaybePromise<boolean>
  • message TMessage

Explanation

With partialCheckAsync you can freely validate the selected input and return true if it is valid or false otherwise. If the input does not match your requirement, you can use message to customize the error message.

The difference to checkAsync is that partialCheckAsync can be executed whenever the selected part of the data is valid, while checkAsync is executed only when the entire dataset is typed. This can be an important advantage when working with forms.

Returns

  • Action PartialCheckActionAsync<TInput, TPaths, TSelection, TMessage>

Examples

The following examples show how partialCheckAsync can be used.

Message details schema

Schema to validate details associated with a message.

import { isSenderInTheGroup } from '~/api';

const MessageDetailsSchema = v.pipeAsync(
  v.object({
    sender: v.object({
      name: v.pipe(v.string(), v.minLength(2), v.maxLength(45)),
      email: v.pipe(v.string(), v.email()),
    }),
    groupId: v.pipe(v.string(), v.uuid()),
    message: v.pipe(v.string(), v.nonEmpty(), v.maxLength(500)),
  }),
  v.forwardAsync(
    v.partialCheckAsync(
      [['sender', 'email'], ['groupId']],
      (input) =>
        isSenderInTheGroup({
          senderEmail: input.sender.email,
          groupId: input.groupId,
        }),
      'The sender is not in the group.'
    ),
    ['sender', 'email']
  )
);

Related

The following APIs can be combined with partialCheckAsync.

Schemas

any, array, custom, instance, intersect, lazy, looseObject, looseTuple, nonNullable, nonNullish, nonOptional, object, objectWithRest, record, strictObject, strictTuple, tuple, tupleWithRest, union, variant

Utils

isOfKind, isOfType

Async

arrayAsync, awaitAsync, customAsync, forwardAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, objectAsync, objectWithRestAsync, pipeAsync, recordAsync, strictObjectAsync, strictTupleAsync, tupleAsync, tupleWithRestAsync, unionAsync, variantAsync

© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/partialCheckAsync/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API