score:2

Accepted answer

According to Yup's documentation:

By default, the cast logic of string is to call toString on the value if it exists. empty values are not coerced (use ensure() to coerce empty values to empty strings).

In other words it calls toString() on the select result which will be "[object Object]" (i.e. it is a string). You can fix it by using strict() (documentation here):

validationSchema={Yup.object().shape({
  select: Yup.string()
    .strict(true)
    .required(" select Required")
})}

Of course then your select input will fail validation so you need to change it to something like this:

<Select
  options={options}
  value={options.find(({ label }) => label === values.select)}
  onChange={value => setFieldValue("select", value.label)}
  onBlur={() => setFieldTouched("select")}
/>

Related Query

More Query from same tag