Вы используете antd. Как указано на этой странице :
В форме также можно использовать настраиваемые или сторонние элементы управления формой. Элементы управления должны следовать следующим соглашениям:
- Имеет значение управляемого свойства или другое имя, равное значению valuePropName.
- Имеет событие onChange или событие, имя которого равно на значение триггера.
- Ссылка поддержки:
- Можно использовать только компонент класса до React@16.3.0.
- Можно использовать forwardRef для добавления поддержки ссылки после React@16.3.0.
antd требует, чтобы CustomSelector
мог получать ссылки. Компоненты функций должны быть обернуты в React.forwardRef
для получения ссылок, в противном случае вы получите сообщение об ошибке.
Решение состоит в том, чтобы обернуть CustomSelector
в forwardRef
:
export const CustomSelector = React.forwardRef(({ items, width, changeEvent }, ref) => {
const mystyles = {
width: width,
};
const handleChange = (e:number) => {
changeEvent(e)
}
const options = items.map(({ value, name }) => <Option key={value} value={value}>{name}</Option>);
return (
<Select ref={ref} style={mystyles} onChange={handleChange}>
{options}
</Select>
);
});
Вы должны убедиться, что Select
соответствует требованиям antd. Проверьте их документы, потому что я их не знаю.