Согласно документации Yup:
По умолчанию логика преобразования строки заключается в вызове toString для значения, если оно существует. пустые значения не приводятся (используйте sure () для приведения пустых значений к пустым строкам).
Другими словами, он вызывает toString()
для результата выбора, который будет "[object Object]"
(т.е. это строка). Вы можете исправить это, используя strict()
( документация здесь ):
validationSchema={Yup.object().shape({
select: Yup.string()
.strict(true)
.required(" select Required")
})}
Конечно, тогда ваш выбранный ввод не пройдет проверку, поэтому вам нужно изменить его на что-то вроде этого:
<Select
options={options}
value={options.find(({ label }) => label === values.select)}
onChange={value => setFieldValue("select", value.label)}
onBlur={() => setFieldTouched("select")}
/>