#reactjs #jsx
#reactjs #jsx
Вопрос:
Я решаю эту проблему. Я использую yup для проверки formik. Код для схемы:
const schema = yup.object().shape<Partial<NoteInterface>>({
noteName: yup.string().required().max(32),
groupId: yup.number().required(),
noteText: yup.string().required().max(32),
noteDuration: yup.string().required().max(32),
noteTags: yup.array().of(yup.string()),
});
И код модели здесь:
export enum cNote {
noteId = 'noteId',
groupId = 'groupId',
noteName = 'noteName',
noteText = 'noteText',
noteDuration = 'noteDuration',
noteCreation = 'noteCreation',
noteTags = 'noteTags',
}
export interface NoteInterface {
noteId: string;
groupId: number;
noteName: string;
noteText: string;
noteDuration: string;
noteCreation: string;
noteTags: string[];
}
export const Note = (): NoteInterface => ({
noteId: '',
groupId: 0,
noteName: '',
noteText: '',
noteDuration: '',
noteCreation: '',
noteTags: [],
});
Все работает нормально, за исключением noteTags, у которых возникает эта проблема:
TS2322: Type 'NotRequiredArraySchema<string | undefined>' is not assignable to type 'Ref | Schema<string[] | undefined> | MixedSchema<string[] | undefined> | undefined'. Type 'NotRequiredArraySchema<string | undefined>' is not assignable to type 'MixedSchema<string[] | undefined>'.
спасибо за ваше время
Ответ №1:
Вы пробовали добавить .required() в средство проверки?
const schema = yup.object().shape<Partial<NoteInterface>>({
noteName: yup.string().required().max(32),
groupId: yup.number().required(),
noteText: yup.string().required().max(32),
noteDuration: yup.string().required().max(32),
noteTags: yup.array().of(yup.string().required()).required(),
});